2017-11-26 7 views
0

のシンボル: https://wmf.ok.ru/play;jsessionid=a-pt2O8FJKq_wzqod9LAJNtwgjNSjaNa-KVIGc1d1eRUSWhdAw9dlDo13fLzh57rGyKPzk2V0jMFrnKw8R4HjA.p162X6pZ_FG0kKMmKa6bkQ?client=flash&jsonp=&tid=40542951634095&ctx=myPHPカール;私はPHPでこのURLにアクセスする必要があるURL

しかし、私のPHPコードの上に、私は404エラーを得ました。私はすべてを正しく行った。私は間違いがあると思う。シンボル。上記のリンクはchromeでは開くことができますが、php curlでは開くことはできません。私のコードは次のとおりです。

<?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); 
?> 

このコードを実行すると、私はMicrosoftのサーバー404エラーを受け取りました。 CurlにこのようなURLを開くにはどうすればよいですか?

+1

は(あなたが 'rawurlencodeを使用してみましたが)'あなたのURLに? –

+0

私はあなたがカールoptsにそれを渡す前に、URLをエンコードする必要があると思う –

+0

私はまた、rawurlencodeとurlencodeを試してみました。彼らのどれも働かなかった。誰かが私に例を示すことができますか? – user2398907

答えて

0

ちょうどあなたの関数にこれを追加し、それが動作します:ここでは

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

が完全に動作する機能である:?

<?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

いいえ動作しませんでした:( – user2398907

+0

私のコンピュータで動作しました。Chromeのネットワークタブを見て、このページにCURLとしてリクエストをコピーして、Terminal/CMDに貼り付けてから動作するかどうかを確認してください。このようなWebサイトを使用して、CURLをPHPのコードに変換します:https://incarnate.github.io/curl-to-php/ – satlosb

+0

これはWAMPでも機能しましたが、サーバでは機能しませんでした。 (お返事ありがとう – user2398907

関連する問題