我找到了这个网站http://www.fonefinder.net/findome.php,通过号码定位电话提供商(例如:http://www.fonefinder.net/findome.php?npa=562&nxx=866&thoublock=1666) 显示 VERIZON CALIFORNIA INC.-CA (GTE)。我尝试使用 linux curl 和 php curl 获取结果,但收到“您必须输入更多数字。” 好像没有发送任何数据。我尝试了以下方法,但不起作用。哪里出了问题,我该如何获取结果?
curl --data "npa=562&nxx=866&thoublock=1666&usaquerytype" \
link --header "Content-Type:text/html"
还尝试了 x-www-form 和以下脚本:
<?
//extract data from the post
extract($_POST);
//set POST variables
$url = 'link';
$fields = array('npa' => urlencode(544), );
//url-ify the data for the POST
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
echo "$result";
//close connection
curl_close($ch);
?>
所有方法的结果都是“您必须输入更多数字。”
答案1
您的请求使用 GET 方法,这意味着查询被编码到 URI 中。
请参阅此处了解更多信息 http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9
因此您需要生成查询字符串并将其附加到 url,例如 findome.php?npa=562&nxx=866 ...
<?php
$url = "http://www.fonefinder.net/findome.php";
$query = array('npa'=>562,'nxx'=>866,'thoublock'=>1666,'usaquerytype');
$url .= sprintf("?%s", http_build_query($query, '', '&'));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);
echo "$result";
?>
答案2
(我对您的消息进行了一些格式化,以使其更具可读性。)
如果您执行上述操作,您也会在浏览器中收到相同的错误消息,因此这不是 cURL 的错误。
我想知道你在哪里找到的格式?如果你手动执行,那么查询只是一个普通的 GET:
http://www.spokeo.com/reverse-phone-lookup/search?p=1234567890&sea2=t104
其中123456790
是 10 位电话号码。我怀疑sea2
是会话标识符,可以从上一页获得。
编辑:有点不同。请求甚至更简单:
GET /search?q=1234567890
这会出现错误 302(重定位),您的程序必须处理该错误并对我传递的第一个 URL 执行 GET 操作。