Как использовать прокси в PHP

Как использовать прокси в PHP (2026)

В этом руководстве я покажу, как настроить прокси в PHP с помощью cURL. Также разберу, как работать с аутентификацией прокси, выполнять ротацию прокси для повышения безопасности и использовать надежные премиум-прокси, такие как Яркие данныеИтак, давайте разберемся и сделаем ваш веб-скрейпинг более стабильным и анонимным!

Настройка прокси в PHP

Сначала посмотрим, как настроить базовый прокси с помощью библиотеки cURL в PHP. Для этого можно взять бесплатный прокси из публичного списка прокси. Учтите, что бесплатные прокси обычно менее надежны и могут перестать работать в любой момент.

Шаг 1: Создайте функцию для скрейпинга

Для начала создайте PHP-скрипт, в котором вы настроите cURL-запрос и параметры прокси. Вот пример того, как это можно сделать:

функция скребок() {
// Initialize cURL
$curl = curl_init();
// Set the target URL
curl_setopt($curl, CURLOPT_URL, "https://httpbin.org/ip");
// Set the proxy address
curl_setopt($curl, CURLOPT_PROXY, "http://50.223.246.237:80");
// Set options to receive the response as a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Follow redirects
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
// Execute the cURL request
$html = curl_exec($curl);
// Display the response
echo $html;
// Catch errors if any
если (curl_errno($curl)) {
echo 'cURL error: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
скребок();
?>

Output

В выводе будет показан IP прокси, через который выполняется запрос:

{
"origin": "50.223.246.237"
}

Если вы получите ошибку вроде «CONNECT tunnel failed», это значит, что бесплатные прокси могут быть ненадежными. В таком случае просто используйте другой из списка.

Аутентификация прокси в PHP

Many платные прокси-сервисыДля их использования требуется аутентификация. Чтобы пройти аутентификацию, нужно указать имя пользователя и пароль для прокси в запросе cURL.

Вот пример настройки аутентификации прокси в PHP:

функция скребок() {
// Initialize cURL
$curl = curl_init();
// Set the target URL
curl_setopt($curl, CURLOPT_URL, "https://httpbin.org/ip");
// Set the proxy address
curl_setopt($curl, CURLOPT_PROXY, "http://54.37.214.253:8080");
// Provide the proxy credentials
curl_setopt($curl, CURLOPT_PROXYUSERPWD, "username:password");
// Set options to return the response as a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Follow redirects
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
// Execute the cURL request
$html = curl_exec($curl);
// Display the response
echo $html;
// Catch errors if any
если (curl_errno($curl)) {
echo 'cURL error: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
скребок();
?>

Если имя пользователя или пароль указаны неверно, вы получите ошибку 407. Проверьте учетные данные и повторите попытку.

Ротация прокси в PHP

Чтобы избежать обнаружения и блокировок, ротация прокси — отличный способ. Эта техника использует несколько прокси, переключая их для каждого запроса. Благодаря этому каждый запрос выглядит так, будто он приходит из другого места, что помогает избежать банов по IP и ограничений по частоте запросов.

Вот как реализовать ротацию прокси в PHP:

// Proxy rotation function
функция proxyRotator($proxy_list) {
// Select a random proxy from the list
возврат $proxy_list[массив_ранд($proxy_list)];
}
функция скребок() {
// List of proxies
$proxies = [
'http://203.115.101.51:82',
'http://50.207.199.82:80',
'http://188.68.52.244:80',
];
// Get a random proxy from the list
$proxy = proxyRotator($proxies);
// Initialize cURL
$curl = curl_init();
// Set the target URL
curl_setopt($curl, CURLOPT_URL, "https://httpbin.org/ip");
// Set the proxy address
curl_setopt($curl, CURLOPT_PROXY, $proxy);
// Set options to return the response as a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Follow redirects
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
// Execute the cURL request
$html = curl_exec($curl);
// Display the response
echo $html;
// Catch errors if any
если (curl_errno($curl)) {
echo 'cURL error: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
скребок();
?>

В выводе будут показаны разные IP-адреса для каждого запроса, что подтвердит работу ротации прокси:

{
"origin": "188.68.52.244"
}

Хотя бесплатные прокси отлично подходят для тестирования, у них высокий процент отказов, и они не подходят для крупномасштабных операций. Для надежного сбора данных лучше использовать премиальные прокси.

Использование премиум-прокси для повышения надежности

премиальные прокси, например от Яркие данные или Smartproxy, предоставляют высоконадежные резидентские IP-адреса. Эти прокси реже вызывают подозрения, поскольку они привязаны к устройствам реальных пользователей. Bright Data и Smartproxy также предоставляют такие функции, как геолокация и ротация прокси, которые помогают обходить географические ограничения и избегать обнаружения.

Вот пример интеграции Bright Data резидентские прокси с PHP:

функция скребок() {
// Initialize cURL
$curl = curl_init();
// Set the target URL
curl_setopt($curl, CURLOPT_URL, "https://httpbin.org/ip");
// Set the proxy address (Bright Data)
curl_setopt($curl, CURLOPT_PROXY, "http://your_proxy_address");
// Provide your Bright Data credentials
curl_setopt($curl, CURLOPT_PROXYUSERPWD, "your_username:your_password");
// Set options to return the response as a string
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// Follow redirects
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
// Execute the cURL request
$html = curl_exec($curl);
// Display the response
echo $html;
// Catch errors if any
если (curl_errno($curl)) {
echo 'cURL error: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
скребок();
?>

Лучшие практики использования прокси

Чтобы ваш скрапер работал эффективно и оставался незамеченным, придерживайтесь следующих рекомендаций:

  • Rotate IPs: Используйте прокси с ротацией чтобы избежать обнаружения. Если вы собираете большие объемы данных, это критически важно.
  • Use Proper Headers: задайте такие заголовки запроса, как User-Agent чтобы запросы выглядели как обычный веб-трафик.
  • Control Request SpeedСлишком частая отправка запросов может привести к обнаружению. Добавляйте задержки между запросами или используйте экспоненциальный backoff для повторных попыток.
  • Be Ethical: Follow the rules in the site’s robots.txt file, and avoid scraping data that violates the site’s terms of service.

Заключение

Настроить прокси в PHP просто, и это помогает избежать блокировок по IP при сборе данных. Если вы используете бесплатные прокси для тестирования или премиальные, такие как Bright Data, для большей надежности, прокси необходимы для любого серьезного веб-скрапера. Ротируя прокси, настраивая аутентификацию и соблюдая лучшие практики, вы сможете безопасно и эффективно собирать данные с сайтов.

Похожие записи