如何在 PuppeteerSharp 中设置代理
在这里,我将向你展示如何使用 PuppeteerSharp 查找和设置代理,并介绍如何使用 旋转代理 在 2024 年实现更顺畅、更有效的刮削。无论您是刮研新手还是希望提高刮研水平,这些步骤都能帮助您轻松上手!
为什么在 PuppeteerSharp 中使用代理?
代理是您的代码与目标网站之间的中介,可以有效地掩盖您的 IP 地址。这样,你就可以绕过网站为防止僵尸访问而设置的一些安全措施。下面是在 PuppeteerSharp 中使用代理的一些具体好处:
- IP 屏蔽: 代理可以隐藏您的原始 IP 地址,让您匿名浏览。
- 地理位置: 您可以通过选择不同地理位置的代理来获取特定地区的数据。
- 费率限制规避: 通过轮流使用代理服务器,您可以防止 IP 屏蔽,并在访问内容时不会频繁访问同一地址。
大型项目的最佳代理
对于大型项目,我建议使用住宅代理。这些代理基于真实用户 IP,可以轮换使用,是大多数项目类型(尤其是网络搜索)的最佳选择。
以下是最值得使用的住宅代理服务器列表(价格不包括企业计划):
- Bright Data - 最大的提供商、精准定位、代理管理器工具,起价 $5.88/GB
- Oxylabs - 广泛的网络、精确的定位、专门的支持,起价 $6.98/GB
- Smartproxy - 大容量、宽位置、自助服务,起价 $4.5/GB
- Webshare - 定制选项、自助服务、经济实惠,起价为 $5.5/GB
- SOAX - 灵活轮换、精确定位、全天候支持,起价 $4/GB
步骤 1:设置 PuppeteerSharp
在配置代理之前,让我们先建立一个简单的 PuppeteerSharp 项目。PuppeteerSharp 是一个 .NET 库,它基于 Google Chrome 浏览器的无头浏览器功能,为网络搜索和自动化提供了一个无头浏览器界面。
- 创建控制台项目: 在 C# 环境中创建一个新的控制台项目。
安装 PuppeteerSharp: 在终端中使用下面的命令安装 PuppeteerSharp:
dotnet add package PuppeteerSharp
基本 PuppeteerSharp 设置: 下面是使用 HTTP 请求获取 IP 地址的 PuppeteerSharp 最小设置:
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();
}
}
这段代码会启动一个无头浏览器,导航到 httpbin API,并打印返回的 IP 地址。
步骤 2:使用 PuppeteerSharp 配置代理服务器
要隐藏实际 IP 地址或避免速率限制,请在 PuppeteerSharp 中配置代理。方法如下
获取代理: 在本例中,您可以使用来自 免费代理列表 (用于测试)。对于生产级项目,应考虑高级代理服务,以确保可靠性和安全性。
定义代理选项: 在 PuppeteerSharp 中,你可以使用 LaunchOptions 中的 Args 参数设置代理详情。更新你先前的代码,指定代理服务器:
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { " - proxy-server=:" }
});
将 : 替换为实际的代理详细信息。例如,代理可能是 8.219.97.248:80。
配置代理后,在运行脚本时,您的 IP 应反映代理的 IP。
第 3 步:高级代理的代理验证
高级代理通常需要通过用户名和密码进行身份验证,这对访问高质量、安全的代理至关重要。在页面实例中,你可以使用 AuthenticateAsync 方法在 PuppeteerSharp 中添加代理凭证。
下面介绍如何修改代码以添加代理身份验证:
await using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new[] { " - proxy-server=:" }
});
await using var page = await browser.NewPageAsync();
await page.AuthenticateAsync(new Credentials
{
Username = "",
Password = ""
});
await page.GoToAsync("https://httpbin.io/ip");
var pageContent = await page.GetContentAsync();
Console.WriteLine(pageContent);
await browser.CloseAsync();
将 和 替换为您的高级代理证书。
步骤 4:在 PuppeteerSharp 中旋转代理
在搜索大量数据时,轮换使用代理服务器可以防止被发现,降低被拦截的几率。通过在多个代理 IP 之间切换,每个请求看起来都来自不同的位置,从而帮助你不被发现。
定义代理列表: 首先创建一个代理服务器列表,您可以从免费代理服务器列表等网站获取代理服务器。
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}" }
});
提出多项请求: 要观察旋转情况,可以循环处理请求,每次选择不同的代理。
步骤 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();
}
}
结论
谨慎管理代理服务器可使 PuppeteerSharp 成为强大的网络搜索工具,同时降低被拦截的风险。我发现,免费的代理服务器对于测试和简单的任务很有用,但大多数严肃的应用程序都需要可以轮换的高级代理服务器。无论是收集市场数据还是创建自动化工具,学会使用 PuppeteerSharp 代理为可靠的数据收集提供了很多机会。有了正确的设置,你就可以收集到有价值的见解,而不会受到限制。