Як налаштувати проксі в PuppeteerSharp
Тут я покажу, як знайти й налаштувати проксі для PuppeteerSharp, а також розповім, як використовувати Ротаційні проксі для плавнішого й ефективнішого вебскрапінгу у 2024 році. Незалежно від того, чи ви новачок у вебскрапінгу, чи прагнете вдосконалити підхід, ці кроки допоможуть вам легко почати!
Навіщо використовувати проксі з PuppeteerSharp?
Проксі — це посередники між вашим кодом і цільовим сайтом, які фактично маскують вашу IP-адресу. Завдяки цьому вони дають змогу обходити деякі заходи безпеки, які сайти запроваджують для запобігання доступу ботів. Ось кілька конкретних переваг використання проксі з PuppeteerSharp:
- IP Masking: Проксі дають змогу переглядати сторінки анонімно, приховуючи вашу початкову IP-адресу.
- Geolocation: Ви можете отримувати доступ до даних, прив’язаних до певного регіону, обираючи проксі з різних географічних локацій.
- Rate Limiting Circumvention: Чергуючи проксі, ви можете запобігти блокуванням IP і отримувати доступ до контенту, не звертаючись занадто часто з тієї самої адреси.
Найкращі проксі для великих проєктів
Для великих проєктів я рекомендую використовувати резидентські проксі. Ці проксі базуються на реальних IP користувачів і підтримують ротацію, тож це ідеальний вибір для більшості типів проєктів, особливо для вебскрапінгу.
Ось список найкращих резидентських проксі для використання (ціни не включають корпоративні тарифи):
- Bright Data — Найбільший постачальник, точне таргетування, інструмент Proxy Manager, від $5.88/GB
- Oxylabs — Широка мережа, точне таргетування, виділена підтримка, від $6.98/GB
- Smartproxy — Велика пул, широкий вибір локацій, self-service, від $4.5/GB
- Webshare — Можливості кастомізації, самообслуговування, доступно, від $5.5/GB
- SOAX — Гнучка ротація, точне таргетування, підтримка 24/7, від $4/GB
Step 1: Setting Up PuppeteerSharp
Before configuring proxies, let’s set up a simple PuppeteerSharp project. PuppeteerSharp is a .NET library that provides a headless browser interface for web scraping and automation, based on Google Chrome’s headless browser capabilities.
- Створіть консольний проєкт: Створіть новий консольний проєкт у вашому середовищі C#.
Install PuppeteerSharp: Use the command below in your terminal to install PuppeteerSharp:
dotnet add package PuppeteerSharp
Basic PuppeteerSharp Setup: Нижче наведено мінімальне налаштування PuppeteerSharp для отримання вашої IP-адреси за допомогою HTTP-запиту:
using PuppeteerSharp;
using System;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
await using var browser = await Puppeteer.LaunchAsync(
new LaunchOptions { Headless = true });
await using var page = await browser.NewPageAsync();
await page.GoToAsync("https://httpbin.io/ip");
var pageContent = await page.GetContentAsync();
Console.WriteLine(pageContent);
await browser.CloseAsync();
}
}
Цей код запускає headless-браузер, переходить до API httpbin і виводить повернену IP-адресу.
Крок 2: Налаштування проксі в PuppeteerSharp
Щоб приховати вашу фактичну IP-адресу або уникнути лімітів на кількість запитів, налаштуйте проксі в PuppeteerSharp. Ось як:
Отримати проксі: Для цього прикладу ви можете використати безкоштовний HTTP-проксі з Free Proxy List (для тестування). Для проєктів рівня production варто розглянути преміальні proxy-сервіси заради надійності та безпеки.
Define Proxy Options: У PuppeteerSharp можна налаштувати параметри проксі за допомогою параметра Args у LaunchOptions. Оновіть попередній код, щоб вказати проксі-сервер:
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { " - proxy-server=<PROXY_IP_ADDRESS>:<PROXY_PORT>" }
});
Replace <PROXY_IP_ADDRESS>:<PROXY_PORT> with your actual proxy details. For instance, a proxy might look like 8.219.97.248:80.
Після налаштування проксі ваша IP-адреса має відображати IP проксі під час запуску скрипта.
Крок 3: Автентифікація проксі для преміальних проксі
Преміальні проксі часто вимагають автентифікації за допомогою імені користувача та пароля, що є необхідним для доступу до якісних і безпечних проксі. Для екземпляра сторінки в PuppeteerSharp можна додати облікові дані проксі за допомогою методу AuthenticateAsync.
Ось як змінити ваш код, щоб додати автентифікацію проксі:
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { " - proxy-server=<PROXY_IP_ADDRESS>:<PROXY_PORT>" }
});
await using var page = await browser.NewPageAsync();
await page.AuthenticateAsync(new Credentials
{
Username = "<YOUR_USERNAME>",
Password = "<YOUR_PASSWORD>"
});
await page.GoToAsync("https://httpbin.io/ip");
var pageContent = await page.GetContentAsync();
Console.WriteLine(pageContent);
await browser.CloseAsync();
Replace <YOUR_USERNAME> and <YOUR_PASSWORD> with your premium proxy credentials.
Крок 4: Ротація проксі в PuppeteerSharp
Під час вебскрапінгу великих обсягів даних ротація проксі може запобігти виявленню та зменшити ймовірність блокування. Перемикаючись між кількома IP-адресами проксі, кожен запит виглядає так, ніби надходить з іншого місця, що допомагає залишатися поза увагою.
Визначте список проксі: Почніть зі створення списку проксі, які можна взяти із сайтів на кшталт Free Proxy List.
var proxies = new List<string>
{
"http://34.140.70.242:8080",
"http://118.69.111.51:8080",
"http://15.204.161.192:18080",
"http://186.121.235.66:8080",
};
Вибрати випадковий проксі: З кожним запитом випадково обирайте проксі. Код нижче вибирає випадковий проксі зі списку та запускає PuppeteerSharp з ним.
var random = new Random();
int randomIndex = random.Next(proxies.Count);
string randomProxy = proxies[randomIndex];
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { $" - proxy-server={randomProxy}" }
});
Make Multiple Requests: Щоб побачити ротацію, можна запускати запити в циклі, щоразу обираючи інший проксі.
Крок 5: Реальні сценарії з ротаційними проксі
Багато комерційних вебсайтів, як-от G2, мають розвинені механізми захисту від ботів і захищені такими сервісами, як Cloudflare. Безплатні проксі менш ефективні в таких випадках, оскільки ці вебсайти швидко їх блокують.
Розгляньте можливість використовувати резидентські проксі замість безкоштовних, щоб скрапити складніші цілі. Резидентські проксі використовують реальні IP-адреси, пов’язані з домашніми користувачами, тому їх менш імовірно позначать.
Якщо ви впроваджуєте ротацію проксі в реальному сценарії, структура вашого коду виглядатиме так:
using PuppeteerSharp;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var proxies = new List<string>
{
"http://34.140.70.242:8080",
"http://118.69.111.51:8080",
"http://15.204.161.192:18080",
"http://186.121.235.66:8080",
};
var random = new Random();
int randomIndex = random.Next(proxies.Count);
string randomProxy = proxies[randomIndex];
var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { $" - proxy-server={randomProxy}" }
});
await using var page = await browser.NewPageAsync();
await page.GoToAsync("https://httpbin.io/ip");
var pageContent = await page.GetContentAsync();
Console.WriteLine(pageContent);
await browser.CloseAsync();
}
}
Conclusion
Ретельне керування проксі робить PuppeteerSharp потужним інструментом для вебскрапінгу, водночас знижуючи ризик блокування. Я помітив, що безплатні проксі можуть бути корисними для тестування та простих завдань, але більшість серйозних застосунків потребують преміум-проксі, які можна ротувати. Незалежно від того, чи я збираю ринкові дані, чи створюю інструменти автоматизації, навчання роботі з проксі в PuppeteerSharp відкрило переді мною багато можливостей для надійного збирання даних. За правильного налаштування ви можете отримувати цінні інсайти без обмежень.

