Як використовувати проксі в PHP (2026)
У цьому посібнику я покажу, як налаштувати проксі в PHP за допомогою cURL. Також розгляну, як обробляти автентифікацію проксі, ротацію проксі для більшої безпеки та використовувати надійні преміальні проксі, як-от Bright Data. Отже, давайте поринемо й зробимо ваш вебскрапінг простішим і анонімнішим!
Налаштування проксі в PHP
Спочатку подивімося, як налаштувати базовий проксі за допомогою бібліотеки cURL у PHP. Для цього ви можете взяти безкоштовний проксі із загальнодоступного списку проксі. Майте на увазі, що безкоштовні проксі зазвичай менш надійні й можуть перестати працювати будь-коли.
Крок 1: Створіть функцію вебскрапінгу
Для початку створіть PHP-скрипт, у якому налаштуєте запит cURL і проксі. Ось приклад того, як це можна зробити:
function scraper() {
// 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
if (curl_errno($curl)) {
echo 'Помилка cURL: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
scraper();
?>
Output
Вивід покаже IP-адресу проксі, яку використовують для виконання запиту:
{
"origin": "50.223.246.237"
}
Якщо ви отримаєте помилку на кшталт “CONNECT tunnel failed”, це тому, що безкоштовні проксі можуть бути ненадійними. У такому разі просто використайте інший зі свого списку.
Автентифікація проксі в PHP
Many платні проксі-сервіси, щоб використовувати їхні проксі, потрібна автентифікація. Для цього вкажіть ім'я користувача та пароль для проксі в запиті cURL.
Ось приклад того, як виконати автентифікацію проксі в PHP:
function scraper() {
// 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
if (curl_errno($curl)) {
echo 'Помилка cURL: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
scraper();
?>
Якщо ви введете неправильне ім'я користувача або пароль, отримаєте помилку 407. Перевірте свої облікові дані та спробуйте ще раз.
Ротація проксі в PHP
Щоб уникнути виявлення та блокувань, використання ротаційних проксі є чудовим методом. Ця техніка використовує кілька проксі, змінюючи їх із кожним запитом. Це створює враження, ніби кожен запит надходить з іншого місця, що допомагає уникнути IP-блокувань і обмеження частоти запитів.
Ось як реалізувати ротацію проксі в PHP:
// Proxy rotation function
function proxyRotator($proxy_list) {
// Select a random proxy from the list
return $proxy_list[array_rand($proxy_list)];
}
function scraper() {
// 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
if (curl_errno($curl)) {
echo 'Помилка cURL: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
scraper();
?>
Вивід покаже різні IP-адреси для кожного запиту, що підтверджує, що ротація проксі працює:
{
"origin": "188.68.52.244"
}
Хоча безкоштовні проксі чудово підходять для тестування, вони мають високий відсоток збоїв і не підходять для масштабних операцій. Для надійного вебскрапінгу найкраще використовувати преміум-проксі.
Використання преміум-проксі для надійності
Преміальні проксі, як-от від Bright Data or Smartproxy, пропонують надзвичайно надійні резидентські IP-адреси. Ці проксі рідше позначаються, оскільки вони прив'язані до пристроїв реальних користувачів. Bright Data і Smartproxy також надають такі функції, як геолокація та ротація проксі, що допомагають обходити геообмеження й уникати виявлення.
Ось приклад того, як інтегрувати Bright Data резидентські проксі з PHP:
function scraper() {
// 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
if (curl_errno($curl)) {
echo 'Помилка cURL: ' . curl_error($curl);
}
// Close the cURL session
curl_close($curl);
}
// Run the function
scraper();
?>
Найкращі практики використання проксі
Щоб ваш скрапер працював ефективно та залишався непоміченим, дотримуйтеся таких найкращих практик:
- Rotate IPs: Використовуйте Ротаційні проксі щоб уникнути виявлення. Якщо ви збираєте великі обсяги даних, це критично важливо.
- Use Proper Headers: Налаштовуйте заголовки запитів, такі як User-Agent щоб запити більше нагадували звичайний вебтрафік.
- Control Request Speed: Надто швидке надсилання великої кількості запитів може призвести до виявлення. Впровадьте затримки між запитами або використовуйте експоненційне збільшення інтервалів між повторними спробами.
- Be Ethical: Follow the rules in the site’s robots.txt file, and avoid scraping data that violates the site’s terms of service.
Conclusion
Налаштувати проксі в PHP легко, і це допоможе уникати IP-блокувань під час вебскрапінгу даних. Якщо ви використовуєте безкоштовні проксі для тестування чи преміум-варіанти на кшталт Bright Data для кращої надійності, проксі є обов’язковими для будь-якого серйозного вебскрапера. Ротація проксі, обробка автентифікації та дотримання найкращих практик дадуть змогу безпечно й ефективно збирати дані з сайтів.

