跳到正文

AI 智能体与自动化浏览器:给它们一个法国连接

从云服务器上网的智能体经常被拒绝。移动 IP 能解决什么,如何把它接入 Playwright,以及有哪些局限。

update 更新于

一个填写表单的 AI 智能体,一个测试您购买流程的 Playwright 脚本,一个在供应商门户上查看您订单的机器人: 它们大多运行在云服务器上。而云服务器的地址,正是网站最先过滤的那一类。

问题所在

托管商的地址等于在告诉网站:“这不是一个网民”。很多网站的回应是验证码、验证页面, 或者干脆拒绝。一些防护服务甚至向网站提供默认屏蔽 AI 机器人的选项。

一条法国移动线路给智能体一个运营商用户的地址。最粗糙的那种过滤,也就是只看地址的过滤,不会再拒绝它。

本页不建议做的事

一个网站如果通过它的条款、它的 robots.txt 或它的反机器人防护拒绝机器人,那它已经给出了答复。 移动地址改变不了这个答复。

本页面向的是智能体代表您、在您有权操作的地方行事的用途:您的账户、您的工具、您自己的网站、 您合作伙伴的门户,或者对您自己服务的质量测试。关于公开数据的采集,框架见 价格监测与采集。

接入代理

地址和凭据在我的代理中该代理的页面上。

Playwright(Python)

browser = playwright.chromium.launch(proxy={
    "server": "http://HOST:PORT",
    "username": "USERNAME",
    "password": "PASSWORD",
})
context = browser.new_context(locale="fr-FR", timezone_id="Europe/Paris")

locale 和 timezone_id 让页面、日期和价格按法国访客的方式显示。

Puppeteer(Node.js)

const browser = await puppeteer.launch({ args: ["--proxy-server=http://HOST:PORT"] });
const page = await browser.newPage();
await page.authenticate({ username: "USERNAME", password: "PASSWORD" });

简单 HTTP 请求(Python,requests)

proxies = {"https": "socks5h://USERNAME:PASSWORD@HOST:PORT"}
requests.get("https://exemple.fr", proxies=proxies, timeout=30)

socks5h 中的 h 让代理来解析域名:没有它,您的 DNS 请求会从服务器出去。 需要安装 requests[socks] 包。

陷阱

地址只是众多信号之一。 无界面浏览器(headless)除了 IP 之外还有别的特征可被识别。 如果您的智能体用一个好地址仍然被拒绝,问题出在别处。

WebRTC。 自动化浏览器可能通过 WebRTC 在代理之外暴露服务器的地址。参见 WebRTC 与 DNS 泄漏,或者让整台服务器走 WireGuard 隧道。

一个智能体,一个代理。 多个智能体通过同一个地址操作不同的账户,就会被联系在一起。 给每个需要保持分开的场景一条线路;参见隔离您的不同用途。

在合适的时机更换 IP。 绝不要在已登录的会话中途更换:网站会看到同一个账户从一个地址跳到另一个地址。 轮换通过 API 控制,在两个任务之间进行;参见更换 IP。

选哪个套餐

浏览器会加载完整的页面,包括图片和脚本:流量消耗很快。流量无限的套餐让您不必盯着配额。 如果您的任务从一个新地址重新开始会更好,就选轮换;否则选固定地址。

FAQ

自动化浏览器用 HTTP 还是 SOCKS5?

两者都可以。Chromium 不接受在 SOCKS5 代理地址中带用户名,所以上面的示例使用 HTTP。 参见 HTTP 还是 SOCKS5?。

我的智能体在家里运行,不在服务器上。还需要吗?

大概不需要:它已经通过您家里的宽带出去,用的是一个普通用户的地址。只有当您想把它的活动和您自己的活动分开, 或者您身在国外、想给它一个法国来源时,代理才有意义。


另请参阅: 常见错误 · 检查代理是否正常

需要法国移动代理吗? 真实的法国 4G/5G 线路,一个 HTTP 端口和一个 SOCKS5 端口,按需更换 IP。

查看套餐arrow_forward
grid_view知识库