ホームページ  >  記事  >  バックエンド開発  >  HTML はキャプチャできず、curl も file_get_contents もキャプチャできませんが、ページを直接開くことはできます。

HTML はキャプチャできず、curl も file_get_contents もキャプチャできませんが、ページを直接開くことはできます。

WBOY
WBOYオリジナル
2016-06-23 13:23:311001ブラウズ

HTML はキャプチャできず、curl も file_get_contents もキャプチャできませんが、ページを直接開くことはできます。

助けてください

URLは次のとおりです
https:/count.taabao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107

コンテンツが常に空であるのはなぜですか?


ディスカッション (解決策) に返信

コードを投稿して見てください

$ch = curl_init();$url='https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107';curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch);curl_close($ch);echo  $output;

Currre 設定 CURLOPT_USERAGENT、ブラウザ識別を試してください

$ch = curl_init();$url='https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107';curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch);curl_close($ch);echo  $output;


この 4905 の入手方法、ありがとう, オンラインで待機していると、すぐに投稿が完了します。
"ICCP_1_522177046867":4905

jsonp が呼び出す関数を返すだけです:

jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.8966グラム:20.15 ,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4914});括弧内の内容は json_decode 関数でデコードできます


jsonp が呼び出す関数を返すだけです:

jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0, m:4.89661) ,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4914 });

括弧内のコンテンツをインターセプトし、json_decode 関数を使用してデコードします


$arr = json_decode($response, false);

var_dump($arr);
結果 $arr は Null です

試してみましょう、
<?php//$jsonp=file_get_contents('https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107');$jsonp='jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.89661,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4915});';preg_match_all('/\d{1,}}/',$jsonp,$arr);echo trim($arr[0][0],'}');

更新:

<?php//$jsonp=file_get_contents('https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107');$jsonp='jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.89661,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4915});';preg_match_all('/\d{1,}/',$jsonp,$arr);echo array_reverse($arr[0])[0];

次回はもっと良いタイトルを付けてもらえますか?

<meta charset="utf-8"><?php $ch = curl_init();$url='https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107';curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch);curl_close($ch);preg_match_all("/(?:\()(.*)(?:\))/i", $output, $ok);$str=$ok[1][0];$str=str_replace('{"',"{",$str);$str=str_replace('":',":",$str);$str=str_replace(',"',",",$str);//不会正则只能这样苦逼的替换了。。反正就是把他重构为json格式$str=str_replace('{','{"',$str);$str=str_replace(':','":',$str);$str=str_replace(',',',"',$str);$obj=json_decode($str);var_dump($obj);echo "这是你要的ICCP_1_522177046867:".$obj->ICCP_1_522177046867;?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。