从Bitsnoop API获取数据

时间:2014-10-31 16:14:32

标签: php json url curl

我正在使用以下代码来获取跟踪器数据(从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.ini-tools检索网页来源的任何其他方式似乎都无法检索任何数据也来自网址。

有人可以解释为什么会这样吗? 请提供另一种方法来完成检索。 提前谢谢!

1 个答案:

答案 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重定向