2017-11-26 34 views
0

Ich brauche diese URL auf php zuzugreifen: https://wmf.ok.ru/play;jsessionid=a-pt2O8FJKq_wzqod9LAJNtwgjNSjaNa-KVIGc1d1eRUSWhdAw9dlDo13fLzh57rGyKPzk2V0jMFrnKw8R4HjA.p162X6pZ_FG0kKMmKa6bkQ?client=flash&jsonp=&tid=40542951634095&ctx=myPHP locken; Symbol auf url

Aber auf meinem PHP-Code habe ich 404-Fehler. Ich habe alles richtig gemacht. Ich denke, da ist ein Fehler mit; Symbol. Wir können den obigen Link auf Chrome öffnen, aber nicht auf php curl. Hier ist mein Code:

<?php 
    error_reporting(E_ALL); 
    ini_set('display_errors', 1); 

    function file_get_contents_curl($url) { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
     curl_setopt($ch, CURLOPT_HEADER, 0); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  
     curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array(
      'Accept: application/json, text/javascript, */*; q=0.01', 
      'Accept-Encoding: gzip, deflate, br', 
      'Accept-Language: en-US,en;q=0.9,az;q=0.8,tr;q=0.7,uz;q=0.6,ru;q=0.5', 
      'Referer: https://ok.ru/', 
      'Origin: https://ok.rus' 
     )); 
     $data = curl_exec($ch); 
     if(curl_error($ch)) 
     { 
      echo 'error:' . curl_error($ch); 
     } 
     echo curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 
     curl_close($ch); 
     return $data; 
    } 

    $url = 'https://wmf.ok.ru/play;jsessionid=a-pt2O8FJKq_wzqod9LAJNtwgjNSjaNa-KVIGc1d1eRUSWhdAw9dlDo13fLzh57rGyKPzk2V0jMFrnKw8R4HjA.p162X6pZ_FG0kKMmKa6bkQ?client=flash&jsonp=&tid=40542951634095&ctx=my'; 
    echo file_get_contents_curl($url); 
?> 

Nach der Ausführung dieses Codes habe ich Microsoft Server 404 Fehler. Wie kann ich Curl dazu bringen, solche URLs zu öffnen?

+1

Haben Sie versucht, mit 'rawurlencode()' auf deiner URL? –

+0

Ich denke, Sie müssen die URL codieren, bevor Sie es zu curl opts –

+0

Ich habe rawurlencode und urlencode auch versucht. Keine von ihnen hat funktioniert. Kann mir jemand ein Beispiel zeigen? – user2398907

Antwort

0

Fügen Sie einfach diese an Ihre Funktion und es wird funktionieren:

curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); 

Hier ist die volle Arbeitsfunktion:

<?php 

error_reporting(E_ALL); 

ini_set('display_errors', 1); 

function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  
    curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/json, text/javascript, */*; q=0.01', 
    'Accept-Encoding: gzip, deflate, br', 
    'Accept-Language: en-US,en;q=0.9,az;q=0.8,tr;q=0.7,uz;q=0.6,ru;q=0.5', 
    'Referer: https://ok.ru/', 
    'Origin: https://ok.rus' 
    )); 
    $data = curl_exec($ch); 

    if(curl_error($ch)) 
    { 
     echo 'error:' . curl_error($ch); 
    } 
    echo curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); 

    curl_close($ch); 

    return $data; 
} 

$url = 'https://wmf.ok.ru/play;jsessionid=a-pt2O8FJKq_wzqod9LAJNtwgjNSjaNa-KVIGc1d1eRUSWhdAw9dlDo13fLzh57rGyKPzk2V0jMFrnKw8R4HjA.p162X6pZ_FG0kKMmKa6bkQ?client=flash&jsonp=&tid=40542951634095&ctx=my'; 

echo file_get_contents_curl($url); 

>

+0

Nein funktionierte nicht :( – user2398907

+0

Es funktionierte auf meinem Computer. Sie können versuchen, die Registerkarte Netzwerk in Chrome zu sehen, kopieren Sie die Anfrage auf dieser Seite als CURL und fügen Sie es in das Terminal/CMD, dann überprüfen, ob es funktioniert. Später versuchen eine Website wie diese zu verwenden, um die CURL in einen funktionierenden PHP-Code umzuwandeln: https://incarnate.github.io/curl-to-php/ – satlosb

+0

Ja, es funktionierte auch auf WAMP, aber es funktionierte nicht auf dem Server. (Danke für deine Antwort – user2398907