Avatar billede ClubAcedDK Nybegynder
05. juli 2014 - 20:26 Der er 16 kommentarer og
1 løsning

Hjælp til at logge ind på viaplay.dk med cURL

Hej alle.

Nu har jeg siddet i godt en uges tid og har snart ikke mere hår på hovedet :(

Jeg prøver via cURL, at logge ind på viaplay.dk med mine login-oplysninger og gemme cookien i en txt så jeg med samme script kan tilgå og hente indholdet af et XML dokument viaplay domænet.

Dette er hvad jeg har forsøgt indtil videre:

<?php
$username = "xxxx@sxxxxxxxx.dk";
$password = "xxxxxxxxx";
$url = "http://login.viaplay.dk/";
$cookie = "cookie.txt";
$postdata = "username=".$username."&password=".$password;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_REFERER, 'http://viaplay.dk');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_POST, TRUE);
$result = curl_exec ($ch);
if (curl_error($ch)) {
echo curl_error($ch);
} else {
echo $result;
}
curl_close($ch);
?>

Nu er det godt nok http://login.viaplay.dk/ jeg forsøger at sende username og password til... men jeg aner ikke om det er den korrekte url, og jeg er overhovedet heller ikke sikker på hvordan $postdata som sendes skal se ud :S

Det er indholdet fra denne url, som jeg har brug for at kunne hente.
https://play.viaplay.dk/api/playlist/v1?deviceKey=pc-dk&productId=168768&programId=http%3A%2F%2Fdata.entertainment.tv.theplatform.eu%2Fentertainment%2Fdata%2FProgram%2F9679400251

Håber virkelig at der er en der kan hjælpe mig.
Avatar billede jakobdo Ekspert
05. juli 2014 - 20:53 #1
Faktisk ser det ud til login foregår via "GET".

Jeg testede for sjov og kunne se der blev lavet følgende GET mod denne url:

https://login.viaplay.dk/api/login/v1?deviceKey=pc-dk&returnurl=http%3A%2F%2Fcontent.viaplay.dk%2Fpc-dk&username=user@email.com&password=mypass&persistent=true
Avatar billede ClubAcedDK Nybegynder
05. juli 2014 - 21:11 #2
Orv ja det har du ret i - havde jeg helt overset :)

Jeg har ændret $url til https://login.viaplay.dk/api/login/v1?deviceKey=pc-dk&returnurl=http%3A%2F%2Fcontent.viaplay.dk%2Fpc-dk&username=user@email.com&password=mypass&persistent=true og CURLOPT_POST til CURLOPT_GET, men det ser ikke ud til at virke.
Avatar billede jakobdo Ekspert
05. juli 2014 - 21:20 #3
Jeg har ikke adgang til viaplay, men vil gerne give det et forsøg. Hvis du "tør", kan du sende dit login til min mail: jakobdo (at) gmail [dot] com

Så kan jeg se på det.
Avatar billede ClubAcedDK Nybegynder
05. juli 2014 - 21:35 #4
Det er pænt af dig at ville hjælpe mig, og jeg er meget fristet til at dele sende dig mine viaplay login-oplysninger, da jeg er nærmest er desperat efter at brugt så lang tid på at få det her til at virke. Men jeg har det lidt stramt med at udlevere mit login som jeg betaler penge for.

Jeg ved dog at min bror gør brug af "1 måneds gratis viaplay uden binding"... det har han gjort i 6 måneder nu ;)

Man opretter sig bare med sit kreditkort og umiddelbart efter man har modtaget bekræftelses-mailen opsiger man forlængelsen af abonnementet og ingen penge vil blive trukket fra ens konto. Det kan man blive ved med at gøre en gang om måneden og således have gratis viaplay så længe man gider at oprette sig :D

Hvis du gider at gøre dette og hjælpe mig med at få det til at virke, sætter jeg 1000 point på højkant.
Avatar billede jakobdo Ekspert
05. juli 2014 - 21:41 #5
200 point er max, så 1000 er et "nogo"
Forstår godt det med kode osv...
Det var også blot en hurtig måde at komme igang på. :o)
Avatar billede ClubAcedDK Nybegynder
05. juli 2014 - 22:38 #6
Nårh okay, fair nok :P Men vil være utrolig taknemlig hvis du kan hjælpe mig med at knække nødden :)
Avatar billede repox Seniormester
05. juli 2014 - 22:48 #7
<?php

$username = "xxxx@sxxxxxxxx.dk";
$password = "xxxxxxxxx";

$url = "https://login.viaplay.dk/api/login/v1?deviceKey=pc-dk&returnurl=http%3A%2F%2Fcontent.viaplay.dk%2Fpc-dk&username=".urlencode($username)."&password=".urlencode($password)."&persistent=true";
$cookie = "cookie.txt";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36");
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
$result = curl_exec ($ch);
if (curl_error($ch)) {
echo curl_error($ch);
} else {
echo $result;
}
curl_close($ch);

?>
Avatar billede ClubAcedDK Nybegynder
05. juli 2014 - 23:20 #8
Tak for svaret repox, men desværre er $result stadig {"code": 1011, "success": false}

Hvis vil rigtig gerne have dette til at fungere, så hvis man vil teste sit script har jeg oprettet en måneds gratis viaplay til jer.
http://viaplay.dk
E-mail: viaplay@lukop.dk
Adgangskode: gratisviaplay

Håber virkelig at det kan lykkes.
Avatar billede repox Seniormester
05. juli 2014 - 23:23 #9
Ovenstående script - også med de loginoplysninger du har givet - virker fint for mig.

Resultatet for mig er:
{
    "success": true,
    "userData": {
        "firstName": "GratisViaplay",
        "lastName": "*",
        "username": "viaplay@lukop.dk",
        "userId": "iGIMHu09kCPT09ShqEDkBXOTJZufp2yy",
        "numericUserId": "14783584",
        "isVmsCustomer": false,
        "hasContracts": true
    },
    "_links": {
        "curies": [
            {
                "name": "viaplay",
                "href": "http://docs.viaplay.tv/rel/{rel}",
                "templated": true
            }
        ],
        "viaplay:home": {
            "href": "http://content.viaplay.dk/pc-dk"
        }
    },
    "isPersistentLogin": true,
    "code": 1
}
Avatar billede ClubAcedDK Nybegynder
06. juli 2014 - 00:29 #10
Okay, det forsår jeg simpelthen ikke :-S

Dette er hvad jeg får...

http://clubace.dk/curl_viaplay.php
Avatar billede repox Seniormester
06. juli 2014 - 00:34 #11
Prøv at requestbinne dit kald på http://requestb.in/ - det kan være der er nogle forskelle i vores kald.
Avatar billede repox Seniormester
06. juli 2014 - 00:39 #12
Således ser mit kald ud til requestbin: http://requestb.in/1ayxao71?inspect
Avatar billede ClubAcedDK Nybegynder
06. juli 2014 - 01:08 #13
Hvordan bruger man requestbin?
Avatar billede repox Seniormester
06. juli 2014 - 16:01 #14
Det er nu ret simpelt.

Tryk på den grønne knap "Create a RequestBin" og så send dine data til den URL du får, i stedet for til https://login.viaplay.dk/api/login/v1
Avatar billede ClubAcedDK Nybegynder
07. juli 2014 - 19:33 #15
Okay dette er hvad jeg får... http://requestb.in/tm56r2tm?inspect
Ved ikke rigtig hvad jeg dette betyder.

Ville du have noget i mod at pakke php-filen med dit script i en rar fil og linke til den, så jeg kan teste om det virker på min server?
Avatar billede repox Seniormester
07. juli 2014 - 21:19 #16
Det ser ikke ud til at der er nogen forskel.
https://www.dropbox.com/s/gxi4ajlse87xerc/curl.rar
Avatar billede ClubAcedDK Nybegynder
08. juli 2014 - 00:41 #17
Det har du ret i... både scripts og kald er ens :-S
Så sidder og undrer mig over hvordan der det så kan være at mit output er:
HEADER:
HTTP/1.1 403 Forbidden
Accept-Ranges: bytes
Age: 0
Content-Type: application/json; charset=utf8
Date: Mon, 07 Jul 2014 22:36:02 GMT
Server: Varnish
X-Cache: Miss
X-Client-IP: 193.202.110.178
X-GeoIP: NL
X-Instance-IP: 10.0.28.220
X-User-Agent:
Content-Length: 32
Connection: keep-alive

OUTPUT:
{"code": 1011, "success": false}

Hvordan ser dit outout ud?

Ved ikke om det kan være, at scriptet ikke skriver til cookie.txt eller noget i den retningen?... har dog tjekket at cookie.txt har både skrive- og læserettighed.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester