
selenium设置代理ip的两种核心方法
用selenium做自动化,尤其是数据采集,配置代理ip是绕不开的一步。它能帮你解决访问频率过高被封、需要模拟不同地区用户等问题。配置方法主要有两种,一种是通过浏览器启动选项,另一种是利用专门的插件,后者在应对需要认证的代理时更方便。
第一种方法最直接,就是在启动Chrome或Firefox时,通过priming parameter来设置代理。下面以Chrome浏览器为例,展示如何设置一个HTTP代理。
from selenium import webdriver
设置代理服务器地址和端口,这里用示例IP和端口,实际使用时请替换为ipipgo提供的代理信息
proxy = "http://123.45.67.89:8080"
配置Chrome选项
options = webdriver.ChromeOptions()
options.add_argument(f'--proxy-server={proxy}')
启动带有代理设置的浏览器
driver = webdriver.Chrome(options=options)
driver.get("http://httpbin.org/ip") 这个网站可以返回你当前的IP,用于测试代理是否生效
执行上面的代码,如果返回的IP是你设置的代理IP,而不是你本机的真实IP,那就说明代理配置成功了。这种方法简单快捷,适合大多数不需要用户名密码认证的代理IP。
处理需要认证的代理:插件法更高效
如果你的代理IP(例如从ipipgo获取的一些高匿代理)需要用户名和密码进行认证,直接通过启动参数设置就行不通了。这时,我们可以借助一个叫“Proxy Auto Auth”的浏览器插件来帮忙。思路是:先创建一个包含认证信息的插件,然后让Selenium加载这个插件。
你需要手动创建一个ZIP格式的插件文件,或者用代码动态生成。这里给出一个动态生成插件并使用的示例:
from selenium import webdriver
import zipfile
代理信息(请替换为ipipgo用户中心提供的实际信息)
proxy_host = "gateway.ipipgo.com"
proxy_port = "30001"
proxy_user = "your_username"
proxy_pass = "your_password"
创建一个临时的插件文件(.crx或.zip)
manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
}
}
"""
background_js = """
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
scheme: "http",
host: "%s",
port: parseInt(%s)
},
bypassList: ["localhost"]
}
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});
function callbackFn(details) {
return {
authCredentials: {
username: "%s",
password: "%s"
}
};
}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{urls: [""]},
['blocking']
);
""" % (proxy_host, proxy_port, proxy_user, proxy_pass)
将插件文件写入临时目录
import os, tempfile
pluginfile = os.path.join(tempfile.gettempdir(), 'proxy_auth_plugin.zip')
with zipfile.ZipFile(pluginfile, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
配置Chrome加载此插件
options = webdriver.ChromeOptions()
options.add_extension(pluginfile)
driver = webdriver.Chrome(options=options)
driver.get("http://httpbin.org/ip")
这种方法虽然代码量稍多,但能完美解决代理认证问题,是使用需要账号密码的代理服务时的标准解决方案。
自动化爬虫中代理IP的防封策略
仅仅设置上代理IP还不够,要想长期稳定地运行自动化爬虫,必须搭配合理的usage policy,否则再好的代理IP池也经不住滥用。防封的核心思路是“模拟真人”,降低被目标服务器识别为机器的概率。
1. 轮换IP与请求间隔:不要用一个IP地址连续不断地发起请求。应该从代理IP池中随机选取IP,并在请求之间设置随机的、人性化的时间间隔。比如,可以设置每完成3-5个任务就切换一次IP,每次请求间隔2-10秒的随机时间。
2. 会话(Session)管理:对于需要保持登录状态或跟踪会话的爬虫,可以使用“粘性会话”功能。这意味着在设定的时间内(例如10分钟),所有相关请求都使用同一个出口IP,模拟一个真实用户的连续行为。任务完成后,再释放或更换IP。ipipgo的动态住宅代理就支持灵活的轮换和粘性会话设置。
3. 配合浏览器指纹伪装:高级的反爬系统不仅看IP,还会检测浏览器指纹。Selenium可以通过options.add_argument来修改一些特征,例如:
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
可以进一步设置User-Agent
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...')
4. 选择高质量的代理IP类型:数据中心IP容易被识别和封禁。而Residential Proxy IP(如ipipgo提供的动态/静态住宅代理)来自真实的家庭宽带网络,在目标网站看来就是一个普通居民在访问,隐匿性和成功率要高得多。特别是对于社交媒体、电商平台等防护严格的网站,住宅代理几乎是必选项。
常见问题与解答(QA)
Q1:Selenium设置了代理,但访问网站还是显示我自己的IP,或者直接连接失败,怎么办?
A1:请按以下步骤排查:1) 检查代理IP和端口是否填写正确;2) 确认代理协议(HTTP/HTTPS/SOCKS5)是否匹配,Selenium启动参数通常使用HTTP/HTTPS协议;3) 测试代理IP本身是否可用(可以用curl或别的工具先测试);4) 如果代理需要认证,确认是否使用了正确的认证方式(插件法)。另外需要注意,部分代理服务(如ipipgo的多数代理产品)需要用户自身具备海外网络环境才能使用,这是由服务特性决定的,并非直连型代理。
Q2:我应该选择动态住宅代理还是静态住宅代理?
A2:这取决于你的业务场景:
| take | Recommendation Type | rationale |
|---|---|---|
| 大规模数据采集,需要频繁更换IP | Dynamic Residential Agents | IP池巨大(如ipipgo动态住宅代理有9000万+资源),自动轮换,适合应对反爬。 |
| 需要长期维持同一IP的会话,如账号、管理多个固定身份的账号 | Static Residential Agents | IP长期稳定不变(如ipipgo静态住宅代理),纯净度高,适合需要固定IP绑定的业务。 |
| 运营TikTok等对网络质量要求极高的业务 | TikTok专线解决方案 | 这是ipipgo提供的可直连、高稳定、低延迟的专属方案,能确保直播流畅和账号安全。 |
Q3:为什么我的Selenium爬虫用了代理还是被网站封了?
A3:被封不一定是代理IP的问题。请综合检查:1) behavioral model:请求是否过于频繁?是否缺乏人类操作的随机性(如鼠标移动、滚动)?2) 指纹暴露:Selenium驱动浏览器会留下一些自动化特征(如webdriver属性),需要按上文方法进行隐藏。3) 代理IP质量:是否使用了被目标网站标记过的低质量代理?建议选择像ipipgo这样提供真实住宅IP的服务商,其IP来自家庭网络,匿名性高,被封风险显著降低。4) Targeted Website Strategy:有些网站的风控极其严格,可能需要结合更复杂的策略,如降低爬取频率、模拟完整用户行为流等。
选择可靠的代理IP服务:以ipipgo为例
工欲善其事,必先利其器。一个稳定、纯净、覆盖广的代理IP池是自动化项目成功的基石。ipipgo作为专业的代理服务提供商,其产品能很好地满足Selenium自动化爬虫的需求。
对于大多数自动化数据采集任务,推荐使用其Dynamic Residential Agents。它拥有超过9000万的真实住宅IP资源,覆盖220多个国家和地区,支持按流量计费。你可以通过API轻松获取代理列表,并自由设置IP的轮换频率(按请求切换或按会话保持),灵活应对不同的反爬策略。其HTTP(S)和SOCKS5全协议支持,也方便集成到Selenium等各种工具中。
如果你的业务类似于社交媒体多账号管理、电商平台店铺运营等,需要每个账号绑定一个固定且干净的IP地址,那么Static Residential Agents是更优选择。ipipgo的静态住宅代理纯净度高,长期稳定,能有效降低因IP变动导致的账号异常风险。
特别值得一提的是,对于TikTok运营等有特殊网络要求的场景,ipipgo提供了TikTok Solutions,采用多国原生纯净IP和独享高速通道,可以实现一键直连,确保网络稳定流畅,专门解决直播、内容发布中的网络难题。
在Selenium中配置代理IP只是第一步,结合高质量的代理资源与科学的防封策略,才能让你的自动化程序行稳致远。建议根据实际业务场景,在ipipgo官网选择合适的套餐进行测试,找到最适合自己业务的代理解决方案。

