你知道 Proxy Pilot 的作用和工作原理吗?通过学习本文,您将掌握上述知识和诀窍,从而排除 Proxy Pilot 的故障。
什么是代理试点?
说明
Proxy Pilot 是一款完全智能管理代理列表的软件。这意味着,通过使用这种 "微服务",您可以构建更加灵活的系统。
特点
目前的功能包括
- 每次代理尝试之间的特定冷却时间
- 检测到禁令后的特定冷却时间
- 禁言检测(您在服务器上安装的证书允许我们以中间人攻击的方式对您的流量进行解密,并读取由此产生的 HTML 以获取禁言信息),每个网站都有特定的功能
- 最佳使用代理(一开始是循环使用,一旦启动各种冷却计时器,就会使用冷却时间最长的代理)
- 从代理 API 端点自动下载代理列表
- 如果在代理列表中使用多个国家,则可实现地理定位
- 由 ELK 支持的高级统计数据(见下文)
由 ELK 提供技术支持
"(《世界人权宣言》) ELK 堆栈 Kibana 是过去几年来大受欢迎的一款软件......Proxy Pilot 就是由它提供支持的!通过 Kibana 令人惊叹的可视化功能,您可以看到触手可及的惊人统计数据:
它是什么,它不是什么
我们从对 Proxy Pilot 感兴趣的用户那里得到的一个困惑是,Proxy Pilot 能做什么,不能做什么。下面是我们的 一般故障排除.
因此,必须区分代理领航员如何能够 帮助 而当你使用自己的软件时,它却无法阻止许多常见的反窃听技术。
它的作用
-
上述所有功能
-
允许您将代理代码从主代码库中分离出来,并将其放入单独的微服务中
-
100% 已开源(将于 2021 年第四季度推出)
它的作用 不 做:
-
如果您的代理池和设置不合适,它不能保证 100% 的成功率。
-
例如:如果您想以每小时 100 万次请求的速度搜索 domain.com,但只在代理池中输入了 10 个代理,那么您很可能会在目标网站上收到禁止请求。出现这种情况时,您的所有 10 个代理都会进入 "禁用冷却 "状态,Proxy Pilot 会返回 "无代理 "的错误信息。
-
Proxy Pilot 不会 "按每次成功搜索收费"。如果您想卸载 一应俱全 那么我们建议您考虑我们的 搜索机器人应用程序接口.我们的 Scraping Robot API 可处理所有浏览器管理、代理管理,并确保 100% 成功返回到您的软件。Proxy Pilot 只是一个代理管理器,它高度依赖于您提供的代理。如果您提供的代理 IP 地址质量不高,或者您的软件配置不正确,那么您将得到低质量的结果。
-
Proxy Pilot 不为您提供免费代理服务器或访问特定代理服务器池的权限。您必须向它提供您希望使用的代理服务器。同样,如果您根本不想购买代理服务器或管理代理服务器,那么建议使用我们的 Scraping Robot API。
代理领航员设置说明
技术设置说明--它是如何工作的?
如果您还没有阅读过《什么是代理试点?
本文概述了如何实施代理试点的技术细节。首先,让我们定义一下它是如何工作的:
主要组成部分:
-
在软件中安装自定义证书。对于大多数软件来说,这只需 1-2 行代码即可完成。
安装后,我们就可以模拟中间人攻击,对 HTTPS 流量进行解密,从而读取 HTML。一旦我们能读取您请求的完整 HTML,我们就能检测禁止并进行适当的重试。
-
您可以连接到中央 Proxy Pilot 服务器(自托管或托管)。
我们将为您提供一个代理 IP(IP:端口,IP 授权;或 IP:端口:用户:通行证,用户:通行证授权)。您将向该单一代理网关发送所有请求,Proxy Pilot 系统将从该网关接管并将您的请求转发给相应的代理。
-
您的实际代理列表
正如《什么是 Proxy Pilot?Proxy Pilot 会将您的请求转发给这些代理。
编程语言实现
请参阅以下链接,了解如何使用您选择的编程语言实施代理领航程序。对于大多数语言来说,安装自定义证书只需不到两行代码,从那时起,您就可以像使用普通代理一样使用代理网关了。
请参阅以下语言的设置说明:
1.Node.js (请求)
先决条件
您应安装以下程序
-
最新 Node.js 版本
代码示例
使用代理试点所需的线路:
- rejectUnauthorized: false
- rejectUnauthorized: false "忽略 "证书警告
- (可选)- 如果您希望在您的服务器和我们的服务器之间建立安全连接,可以安装我们的证书并在 Node.js 中使用。对于大多数用户来说,这并非必要,您只需 "忽略 "证书错误即可。您可以 在此下载证书.
- // const cert = fs.readFileSync(path.resolve(__dirname, './public/ca.pem'));
- // ca: cert
- // tunnel: true、
- (可选项--如果不进行地理定位,请勿使用)
- // proxyHeaderWhiteList:['X-Sprious-Region']、
headers:{
// 'X-ProxyPilot-Region': 'GB'、
- // proxyHeaderWhiteList:['X-Sprious-Region']、
缢 fs = 要求(fs);
缢 路 = 要求(路径);
/* 注意:如果不需要使用地理定位功能,请将 ./public/ca.pem 替换为服务器上 ca.pem 文件的本地路径,并删除带有 X-ProxyPilot-Region 的行*/。
// const cert = fs.readFileSync(path.resolve(__dirname, './public/ca.pem'));
缢 要求 = 要求(请求);
要求(
{
网址: 'https://www.amazon.com/dp/B07HNW68ZC/',
代理: http://PROXY_LOGIN:PROXY_PASS@proxy_ip:proxy_port,
// ca: cert、
// tunnel: true、
followAllRedirects: 真,
超时: 60000,
方法: "GET",
拒绝未授权: 错误,
压缩: 真,
// proxyHeaderWhiteList:['X-Sprious-Region']、
页眉: {
// 'X-ProxyPilot-Region': 'GB'、
用户代理: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',
}
},
(打错, 回应, 机构) => {
游戏机.登录(打错, 机构);
}
);
2.使用 Puppeteer 的 Node.js
先决条件
您应安装以下程序
代码示例
使用代理试点所需的线路:
- const browser = await puppeteer.launch({
args: ['-no-sandbox', '-disable-setuid-sandbox', '-proxy-server=' + anonymizeProxy、 忽略证书错误],
});- 如果忽略服务器上的证书,则无需安装证书。
缢 木偶 = 要求(木偶人);
缢 代理链 = 要求(代理链);
(异步 () => {
缢 匿名代理 = 等 代理链.匿名代理(http://PROXY_LOGIN:PROXY_PASS@proxy_ip:proxy_port);
缢 浏览器 = 等 木偶.启动({
参数: [--无沙箱, 禁用-setuid-沙箱, '--代理服务器=' + 匿名代理, 忽略证书错误],
});
缢 页码 = 等 浏览器.新页面();
等 页码.开始('https://www.amazon.com/p/dp/B08GL2XTV6');
告诉 页面标题 = 等 页码.标题();
告诉 内容 = 等 页码.$("#priceblock_我们的价格");
告诉 价格 = 等 (等 内容.获取属性(文本内容)).jsonValue();;
游戏机.登录(价格 + ' - ' + 页面标题);
// 应该是'$199.00 - LOVESHACKFANCY 女式安东内拉连衣裙,亮蓝色,4码,亚马逊女装专卖店'。
等 浏览器.关闭();
等 代理链.关闭匿名代理(匿名代理, 真)
})();
3.卷曲
先决条件
您应安装以下程序
-
你应该可以在机器上运行 curl
代码示例
使用代理试点所需的线路:
- -K -压缩
- 通过在 curl 中使用"-k "参数,它将忽略使用代理试点的自定义证书要求。
- (可选)如果您想使用地理定位功能,请通过:
- -proxy-header'X-Sprious-Region:美国
curl -s 'https://www.amazon.com/dp/B07HNW68ZC/' \
-H 'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'。
-k --压缩
-x "PROXY_LOGIN:PROXY_PASS@PROXY_IP:PROXY_PORT
4.Python (请求)
先决条件
您应安装以下程序
-
最新 Python
代码示例
使用代理试点所需的线路:
- r = requests.get(url, headers=headers, proxies=proxies、 验证=假)
- verify=False "忽略 "证书警告
- (可选) # r = requests.get(url, headers=headers, proxies=proxies, verify='./public/ca.pem")
- 如果您希望在您的服务器和我们的服务器之间建立安全连接,可以安装我们的证书并在 Python 中使用。对于大多数用户来说,这并非必要,您只需 "忽略 "证书错误即可。您可以 在此下载证书。
进口请求
url = "https://www.amazon.com/dp/B07HNW68ZC/"
代理服务器 = {
"https": f "http://PROXY_LOGIN:PROXY_PASS@PROXY_IP:PROXY_PORT/"、
"http": f "http://PROXY_LOGIN:PROXY_PASS@PROXY_IP:PROXY_PORT/"
}
headers = {
'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'、
content-encoding': 'gzip'.
}
# r = requests.get(url, headers=headers, proxies=proxies, verify='./public/ca.pem'')
r = requests.get(url, headers=headers, proxies=proxies, verify=False)
print(f "Response Body: {r.text}\n"
"请求头:"
f"{r.request.headers}\n\n"
f "响应时间: {r.elapsed.total_seconds()}\n"
f "Response Code:{r.status_code}\n"
f "Response Headers:{r.headers}\n/n"
f "Response Cookies:{r.cookies.items()}\n\n"
f "请求 {url}\n"
)
5.火狐浏览器
先决条件
您应安装以下程序
-
最新火狐浏览器版本
您应下载自定义证书:
如何在火狐浏览器中使用代理领航员
注意事项 按照下面的说明操作,您就等于允许我们的服务器读取您访问的页面。如果您打算使用浏览器进行正常活动(如使用银行账户),这样做是很危险的。只有当您打算使用我们的证书进行代理活动(如网页搜索)时,才请继续操作,切勿将其用于个人用途!
在 Firefox 中,您可以按照以下步骤导入证书:
-
设置"→"隐私与安全"→"查看证书"→"导入"。
-
选择之前保存的 CA.pem 文件
-
选中复选框 "信任此功能可识别网站"→"确定
-
点击 "确定
然后,您需要指定浏览器使用 PM 代理服务器:
-
设置"→"常规"→"网络设置"→"设置
-
手动代理设置
-
HTTP 代理:PROXY_IP 端口:端口: PROXY_PORT
-
选择 "也将此代理用于 FTP 和 HTTPS"。
-
点击 "确定"。
参观 亚马逊网站.当浏览器要求输入登录名和密码时,请输入:
- 登录: 代理登录
- 密码 通行证
代理管理器错误代码
HTTP 响应代码 | 答复内容 | 说明 |
---|---|---|
500 | 错误重试限制 |
代理试点尝试获取特定 URL 的重试次数达到上限 您可以再次重试您的请求。 |
500 | 无代理 |
您的代理服务器池中目前没有足够的代理服务器。这可能表明所有代理服务器都处于冷却状态,或者如果指定了地理目标头,也可能表明代理服务器池中没有该地区的代理服务器。 要么重试请求,要么检查指定的地理目标头是否与代理池中的可用代理匹配。阅读此处了解更多有关 什么是代理试点,什么不是代理试点. |
重试如何进行?您是在替我进行搜索吗?
鉴于解决方案的复杂性,这个问题很常见。简单的回答是:不,我们不代表您进行刮擦。
当出现以下流程时
-
您向代理试点网关发送请求,要求对 domain.com 进行搜刮
-
代理 Pilot 会将您的请求转发给代理 A
-
proxyA 向代理领航员返回被禁止的 HTML 页面
-
代理 Pilot 发现这是一个禁令,于是向代理 B 发送了同样的请求
-
proxyB 向代理引航员返回成功的 HTML 页面
-
代理 Pilot 会将成功的 HTML 返回给您(用户)。
......在步骤 #4 中,我们会遇到一个常见问题,问我们是否在使用我们的服务器资源进行刮擦,或者是你的服务器计算资源在进行刮擦。答案是,你的服务器仍在进行刮擦。
最好的理解方式是,当你的网络在连接一个网站时中途断开,你的浏览器会显示一个比平时更长的 "正在加载 "符号,因为你的网络在尝试重试。这就是 Proxy Pilot 的主要作用: 当它代表您进行重试时,您的软件在等待 Proxy Pilot 响应的同时会保持连接通道打开。
计算消耗实际上是通过重新发送完全相同的请求头和请求体在代理试点上发生的。通过重新发送完全相同的标题和正文,我们已经通过大量测试证明,这不会影响您的刮擦结果(例如,如果您在 Chromium 上使用 Puppeteer)。
使用 Proxy Pilot 亲自证明这一点的最佳方法是:用浏览器连接到一个仅使用 javascript 的网站(如谷歌地图)。你会发现你可以加载页面,因为在隧道连接打开时,浏览器仍在执行 javascript。
令人困惑?我们同意!请注册 Proxy Pilot,我们很乐意为您提供免费代理试用。
代理试点的一般故障排除
在本文中,我们将讨论在尝试通过 Proxy Pilot 使用代理时,可以采取哪些步骤来帮助排除任何意外问题。需要提醒的是,Proxy Pilot 是一款 它依赖于最终用户的正确配置才能正常工作。如果设置了错误的标头或 cookie、使用了错误的代理等,那么结果还是会很糟糕。
网络搜刮的核心是,如果您无法使用您的家庭/工作 IP 地址在浏览器上加载请求,那么您就不可能使用软件+代理源来搜刮网页。
检测刮擦软件的方法有很多(请参阅 示例1 和 示例2因此,你在加载网站时添加的自定义功能越多(你的软件+代理),你的足迹就越大,也就越容易被发现。
如果您不希望担心此类防刮伤战斗,请访问我们的 API: https://scrapingrobot.com/api/ 我们的 Scraping Robot API 正是为了解决这一问题而设计的:让您专注于核心业务,而不是与反搜索技术作斗争。
如果您希望管理自己的代理服务器、使用开发人员资源并支付服务器计算能力,那么使用 Proxy Pilot 将有助于(但不能解决!)解决这些常见的刮擦问题。
糟糕与良好的搜索请求示例
下面是一个向亚马逊(或任何网站)提出的非常糟糕的刮擦请求示例。Proxy Pilot 的作用不是解决这些糟糕的请求,开发人员的代码仍然需要发送良好的请求以避免被禁止。
curl -s 'https://www.amazon.com/dp/B07HNW68ZC/‘ \
-x 'PROXY_LOGIN:PROXY_PASS@PROXY_IP:PROXY_PORT' \
-k -compressed -v
上述代码之所以会导致封禁,并不是因为代理试点,甚至也不是因为你的代理,而是因为正常的浏览器请求会在请求中设置更多的头信息。具体来说,亚马逊会检查请求中是否至少有 "User-Agent "头信息,因此无论你通过哪个代理运行此请求,都很可能会被拦截。
只需在请求中添加 user-agent,就能大大降低请求的禁止率:
curl -s 'https://www.amazon.com/dp/B07HNW68ZC/‘ \
-H 'User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'。
-x 'PROXY_LOGIN:PROXY_PASS@PROXY_IP:PROXY_PORT' \
-k -compressed -v
小窍门 #1: 在浏览器中复制您的请求,先在浏览器中确认是否有效
说明 如上所述,了解是否是您的软件造成问题的最佳方法是在本地计算机上通过浏览器运行您的请求。因为您的本地机器是纯粹的 "住宅 IP",而浏览器不是定制软件,所以您可以成功加载所有页面。但是,如果使用下面的步骤无法在浏览器中加载页面,则意味着您向目标 URL 传递了不正确的标头或 cookie,因此需要在您的计算机上进行调试,以找到正确的标头/cookies。
故障排除步骤:
-
打开 Chrome 浏览器隐身选项卡,确保清除 cookie
由于大多数刮擦软件都是在没有以前的浏览历史记录和 cookie 的情况下启动的,因此最好采用这种方式来复制软件的工作方式 -
复制要搜索的 URL,将其粘贴到地址栏中即可
-
确保加载结果符合预期。如果加载失败,在设计搜索软件时应考虑到这一点。
在某些情况下,网站甚至可能在这一步就禁止你,因为你没有以前的浏览记录(也没有 cookie)。 -
在 Chrome 浏览器的 "开发工具 "中打开一个网络选项卡,然后检查第一个请求(可能是 "文档 "类型)。检查该请求的 URL 是否与你刚才的请求一致,然后右键单击并选择 "复制为 cURL
浏览器发送的 cURL 应该会出现在剪贴板中,看起来就像这样:
卷曲 'https://www.amazon.com/gp/product/B08F7PTF53/‘ \
-H'权限: www.amazon.com‘ \
-H 'sec-ch-ua:" Not;A Brand";v="99″, "Google Chrome";v="91″, "Chromium";v="91″' \
-H 'sec-ch-ua-mobile: ?0'\
-H 'upgrade-insecure-requests:1' \
-H 'user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36' \\
-H'accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'。
-H 'sec-fetch-site: none'\
-H 'sec-fetch-mode: navigate'\
-H 'sec-fetch-user:?1' \
-H 'sec-fetch-dest: document'\
-H 'accept-language: en-US,en;q=0.9'\
-压缩
请注意,即使在隐身模式下,浏览器也会发送很多头文件。如果使用 cookie,请求量很容易就会增加好几倍。
注:cURL 默认随 macOS 和大多数 Linux 发行版以及最新的 Windows 10 更新提供。
如果你运行的是旧版本的 Windows 系统,可以从它们的 官方网站.
小窍门 #2:通过代理试点从浏览器复制相同请求
说明 完成上一提示中的 #4 步骤后,您就会得到一个完美的 cURL 请求,其中包含一组完美的标头,您只需在该 cURL 请求参数中添加这些标头,就可以尝试通过代理试点复制该请求: -x 'PROXY_LOGIN:PROXY_PASS@PROXY_IP:PROXY_PORT' -v -k
使用之前提供给您的密宝凭据。这将通过密宝发送相同的请求。
您还可以考虑添加参数
-o test.html
这将把结果保存到 test.html 页面中,这样你就可以用浏览器打开并查看其内容,以确保其工作正常。
如果在这一阶段返回正确的内容,说明密宝工作正常,并能管理代理服务器,在代理服务器禁止访问时进行重试等。
如果请求可以直接运行(未通过-x标志设置代理领航程序),但通过代理领航程序停止运行,请告知我们,并让我们知道您发送的是哪个curl请求
小窍门 #3: 通过软件复制相同行为
说明 一旦您通过浏览器和 Proxy Pilot 测试了您的请求,您就可以将其应用到自己的搜刮软件中。与 Proxy Pilot 的集成几乎与使用普通代理进行数据搜刮一样简单。更多详细信息以及不同语言和框架的代码示例,请参见 这里.
请注意,如果在集成过程中,通过 cURL 运行的同一请求在您的软件中停止运行,最有可能的原因是一组标头。许多网站都实施了非常复杂的反抓取解决方案,这些解决方案不仅会考虑 cookie、用户代理,还会考虑特定的标头顺序、压缩算法和特定的浏览器市场份额(例如,Chrome v41 很少被使用,因此通过用户代理发送该请求会让目标网站觉得可疑)。
参考资料
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264080-what-is-proxy-pilot-
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264081-proxy-pilot-setup-instructions
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264085-using-python-requests-with-proxy-pilot
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264083-using-node-js-requests-with-proxy-pilot
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264084-using-node-js-puppeteer-with-proxy-pilot
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264086-using-curl-with-proxy-pilot
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264087-using-firefox-with-proxy-pilot
- https://portal.blazingseollc.com/en/support/solutions/articles/64000264203-general-troubleshooting-for-proxy-pilot
免责声明:这部分内容主要来自商家。如果商家不希望在我的网站上显示,请 联系我们 删除您的内容。
最后更新于 5 月 16, 2022