#php #curl #proxy
#php #curl #прокси
Вопрос:
Я хотел бы открыть любой URL с помощью cURL, используя прокси-соединение. Ниже приведены коды … по-прежнему мы не можем подключить это и получить положительные данные с помощью этой функции, пожалуйста, предоставьте подходящую помощь для решения этой проблемы. Каждый раз, когда я запускаю этот код. Я получил условное сообщение «Else».
<?php
function getPage($proxy, $url, $referer, $agent, $header, $timeout) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
$result['EXE'] = curl_exec($ch);
$result['INF'] = curl_getinfo($ch);
$result['ERR'] = curl_error($ch);
curl_close($ch);
return $result;
}
?>
<?php
$result = getPage(
'[64.71.138.122]:[80]', // use valid proxy
'http://www.google.com/search?q=twitter',
'http://www.google.com/',
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1',
1,
5);
if (empty($result['ERR'])) {
echo "Positive message" ;
} else {
echo "Negative Message" ;
}
?>
Когда мы напечатаем это «print_r ($result);», результатом будет ……….
Array ( [EXE] => [INF] => Array ( [url] => http://www.google.com/search?q=twitter [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 5.019769 [namelookup_time] => 0.000129 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] => 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 ) [ERR] => connect() timed out! )
Комментарии:
1. Если вы
echo $result['ERR'];
, что это говорит?2. кроме того, я почти уверен, что
[64.71.138.122]:[80]
следует просто сказать64.71.138.122
(хотя я могу ошибаться в этом)3. Пожалуйста, вы можете протестировать, просто указав IP-адрес в
$proxy
аргументе. Также, пожалуйста, убедитесь в браузере, что прокси действительно работает, и что он будет принимать запросы от вашего сервера.4. Как я могу проверить это на нашем сервере.
5. Если вы проверите его со своего компьютера, это было бы хорошим началом (т. Е. Убедитесь, что он вообще работает) — Чтобы убедиться, что он будет принимать запросы с вашего сервера, вы можете связаться с владельцем прокси-сервера и убедиться, что у них нет черного / белого списка в действии. Простым тестом было бы посмотреть,
$fp = fsockopen('64.71.138.122',80,$errCode,$errStr,5); echo $errStr;
удастся ли
Ответ №1:
Возможно, это может помочь http://code.google.com/apis/gdata/articles/using_cURL.html#authenticating Вы должны действительно понимать, что вы скопировали http://www.fromzerotoseo.com/scraping-websites-php-curl-proxy /
вы можете использовать
function curl_google($keyword){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,
'http://www.google.com/search?hl=enamp;q='.urlencode($keyword).'amp;btnG=Google Searchamp;meta=');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
return $data = curl_exec($ch);
curl_close($ch);
}
но вы должны проанализировать результаты (возможно, используя SimpleXMLElement)…удачи
Комментарии:
1. Возможно ли использовать этот скрипт для массового использования?
2. более подробно, пожалуйста, вы также можете использовать SOAP, хотя API Google не работает … я попробовал сегодня…