Я нашел этот веб-сайт 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-форму и с этим скриптом:

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

Все методы приводят к «Вы должны ввести больше числовых цифр».

2 ответа2

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";
?>
0

(Я немного отформатировал ваше сообщение, чтобы сделать его более читабельным.)

Если вы сделаете вышеупомянутое, вы также получите такое же сообщение об ошибке в браузере, так что это не ошибка cURL.

Интересно, где вы нашли формат? Если вы делаете это вручную, тогда запрос - это просто обычный GET:

http://www.spokeo.com/reverse-phone-lookup/search?p=1234567890&sea2=t104

где 123456790 - 10-значный номер телефона. Я подозреваю, что sea2 будет идентификатором сеанса, который вы получили с предыдущей страницы.

РЕДАКТИРОВАТЬ: Это немного по-другому. Запрос еще проще:

GET /search?q=1234567890

Это дает ошибку 302 (перемещение), которую ваша программа должна обработать и выполнить GET для первого URL, который я передал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .