Я хочу установить curl для использования прокси-сервера. URL-адрес предоставляется в форме html, что не было проблемой. Без прокси работает нормально. Я нашел код на этом и других сайтах, но они не работают. Мы будем очень благодарны за любую помощь в поиске правильного решения. Я чувствую, что рев близко, но что-то упускаю. Спасибо.
Приведенный ниже код я адаптировал отсюда http://www.webmasterworld.com/forum88/10572.htm, но он возвращает сообщение об ошибке об отсутствии T_VARIABLE в строке 12.
<?
$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch);
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>
Ниже приведено сообщение от curl через прокси, которое не возвращает контент.
<?
$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_HEADER, 1);
$exec = curl_exec($ch);
echo curl_error($ch);
print_r(curl_getinfo($ch));
echo $exec;
?>
в настоящее время находится на сайте pelican-cement.com, но также не работает.
ОБНОВЛЕНИЕ: Спасибо за вашу помощь, я внес указанные выше изменения. Теперь он возвращает только пустой экран.
<?
$url = $_POST['1'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
?>
$_POST['1']
Ответы:
Вот рабочая версия с удаленными вашими ошибками.
Я добавил
CURLOPT_PROXYUSERPWD
на случай, если какой-либо из ваших прокси требует имя пользователя и пароль. Я установилCURLOPT_RETURNTRANSFER
значение 1, чтобы данные возвращались в$curl_scraped_page
переменную.Я удалил второй лишний,
curl_exec($ch);
который останавливал возвращение переменной. Я объединил ваш IP-адрес и порт прокси в одну настройку.Я тоже удалил
CURLOPT_HTTPPROXYTUNNEL
и такCURLOPT_CUSTOMREQUEST
как это было по умолчанию.Если вы не хотите, чтобы заголовки возвращались, закомментируйте
CURLOPT_HEADER
.Чтобы отключить прокси, просто установите для него значение null.
Не стесняйтесь задавать любые вопросы, я работаю
cURL
каждый день.источник
Я объяснил использование различных опций CURL, необходимых для CURL PROXY.
источник
Вот хорошо протестированная функция, которую я использовал для своих проектов, с подробными, не требующими пояснений, комментариями.
Часто порты, отличные от 80, блокируются брандмауэром сервера, поэтому код работает нормально на localhost, но не на сервере.
источник
/etc/ssl/certs
в Debian / Ubuntu)