我正在使用以下代码来获取跟踪器数据(从JSON转换为PHP)并找到BitSnoop API中播种器数量的总和:
$hash = "98C5C361D0BE5F2A07EA8FA5052E5AA48097E7F6";
if(!function_exists("curl_init")) die("cURL extension is not installed");
$url = "http://bitsnoop.com/api/trackers.php?hash=" . $hash . "&json=1";
echo $url;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$r=curl_exec($ch);
curl_close($ch);
$myarr = json_decode($r,true);
print_r($myarr);
但是该脚本无法从URL中检索任何数据。
Chrome的浏览源正在使用page,但通过viewsource.in或i-tools检索网页来源的任何其他方式似乎都无法检索任何数据也来自网址。
有人可以解释为什么会这样吗? 请提供另一种方法来完成检索。 提前谢谢!
答案 0 :(得分:1)
你应该假装成一个合法的浏览器:
$hash = "98C5C361D0BE5F2A07EA8FA5052E5AA48097E7F6";
if(!function_exists("curl_init")) die("cURL extension is not installed");
$url = "http://bitsnoop.com/api/trackers.php?hash=" . $hash . "&json=1";
$headers = array(
'Host: bitsnoop.com',
'Connection: keep-alive',
'Cache-Control: max-age=0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',
'Accept-Encoding: deflate,sdch',
'Accept-Language: ru,en-US;q=0.8,en;q=0.6');
echo $url;
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$r=curl_exec($ch);
curl_close($ch);
$myarr = json_decode($r,true);
print_r($myarr);
并且测试curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
也是一个好主意,但是,我不知道他们是否使用HTTP重定向