当爬虫遇上验证码?试试Playwright+代理IP这对王炸
最近老有兄弟问我,用Playwright做自动化总被目标网站ban IP怎么办?这事儿我太熟了!去年做电商数据采集那会儿,三天两头就要换IP。后来发现给Playwright套上代理IP才是正解,就跟给汽车换车牌一个道理。
先说个真实场景:上周帮朋友搞旅游网站价格监控,单IP访问超过50次就被掐。换成ipipgo的动态住宅代理后,连续跑了三天都没翻车。这里面的门道,咱们分语言来唠唠。
Python选手看这里:三行代码注入代理
用Python的兄弟们记好这个套路:
“`python
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
关键在这三行配置
proxy = {
“server”: “gateway.ipipgo.com:8000”,
“username”: “你的账号”,
“password”: “你的密钥”
}
browser = p.chromium.launch(proxy=proxy)
page = browser.new_page()
page.goto(“https://目标网站”)
…后续操作…
“`
注意username和password千万别用明文!建议存在环境变量里。ipipgo的后台可以直接生成这种鉴权字符串,比某些需要自己拼接的服务商省事多了。
JS玩家专属:异步代理配置技巧
Node.js环境下容易遇到代理不生效的问题,多半是异步加载搞的鬼。正确姿势看这里:
“`javascript
const { chromium } = require(‘playwright’);
(async () => {
const browser = await chromium.launch({
proxy: {
server: ‘http://gateway.ipipgo.com:8000’,
username: process.env.IPIPGO_USER,
password: process.env.IPIPGO_PASS
}
});
const page = await browser.newPage();
await page.goto(‘https://需要访问的地址’);
// 记得检查IP是否生效
console.log(await page.evaluate(() => document.body.innerHTML));
})();
“`
重点提醒:一定要在launch时传入代理,在browser.newPage()之后设置就晚了!ipipgo的代理通道支持HTTP/HTTPS/SOCKS5三种协议,实测用SOCKS5协议成功率最高。
Java老炮必看:代理池动态切换方案
企业级应用讲究个代理池轮换,用ipipgo的API动态获取IP才是王道:
“`java
import com.microsoft.playwright.;
public class ProxyDemo {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// 从ipipgo接口获取最新代理
String[] currentProxy = getIpipgoProxy();
BrowserType.LaunchOptions options = new BrowserType.LaunchOptions()
.setProxy(new Proxy(“http://”+currentProxy[0]))
.setHeadless(false);
Browser browser = playwright.chromium().launch(options);
Page page = browser.newPage();
page.navigate(“https://业务网站”);
System.out.println(page.title());
}
}
private static String[] getIpipgoProxy() {
// 调用ipipgo的API获取动态IP
// 返回格式 [ip:port, username, password]
}
}
“`
划重点:每次创建Browser实例前都要刷新代理,千万别一个IP用到死。ipipgo的并发池模式特别适合这种场景,实测每秒能换200+个住宅IP。
踩坑大全:你遇到的坑我都填过
症状 | 病因 | 解药 |
---|---|---|
代理明明配置了却连不上 | 协议头写错(比如http写成https) | 用ipipgo提供的全协议兼容通道 |
登录后还是被识别 | 浏览器指纹泄露 | 配合playwright的device模拟参数 |
移动端环境失效 | IP类型不匹配 | 改用ipipgo的4G/5G移动代理池 |
灵魂拷问:你的代理服务商选对了吗?
市面上的代理服务我测过不下20家,最后锁定ipipgo就三个原因:
- 真住宅IP:不像某些服务商拿机房IP冒充
- 零流量限制:随便跑不用担心超额
- 独家API设计:取IP像叫出租车一样方便
特别是他们的智能路由功能,自动选择延迟最低的节点。上次做直播数据采集,8小时跑了70GB流量,IP存活率还在92%以上。
QA时间:高频问题一网打尽
Q:代理IP经常失效怎么办?
A:换用ipipgo的动态住宅代理,每次请求自动切换IP,根本不给网站封禁的机会。
Q:需要采集海外网站怎么办?
A:ipipgo的全球覆盖不是吹的,实测连毛里求斯的IP都能稳定获取。不过要注意遵守当地法律法规哦。
Q:同时开多个浏览器实例怎么管理代理?
A:用他们的会话保持模式,每个browser实例绑定独立IP,业务逻辑清晰不串号。
最后说句掏心窝的:技术手段只是工具,选对代理服务商才是王道。与其在代码里折腾防封,不如直接用ipipgo这种靠谱服务,把精力放在业务逻辑上不香吗?