前言
在使用dp进行自动化进行采集时候,难免会进行切换代理的操作,正常配置的话,需要关闭当前浏览器,在启动前配置好代理ip,今天推荐大家两种办法,而且不会产生太大的影响,无感的那种
方案一
使用隧道代理,隧道代理大家都不陌生,自带切换ip的方式,今天着重说一下的原因是因为,有的时候会采用账密的形式,而dp不支持此种方案,所以我目前采用插件的方式进行切换代理,具体代码详见git地址点击跳转到git,
使用方法详见README.md文件,不多说,仅需修改下代理地址+账户密码,使用时候仅需加载插件即可
测试代码
from DrissionPage import ChromiumPage, ChromiumOptions
co = ChromiumOptions()
co.add_extension(r'proxy')
co.auto_port()
page = ChromiumPage(co)
page.get('https://gitea.bgspider.com/bgspider/dp_proxy')
page.get('https://www.ip138.com/')
方案二
使用接口形式,进行切换代理地址,方案详见DrissionPageX: 基于DrissionPage库4.0.3.4二开 (gitee.com)
使用方法:
from DrissionPage import WebPage, ChromiumOptions
from DrissionPage_Pligin.Set_Proxies_V2 import Set_Proxies_V2
proxy = Set_Proxies_V2()
co = ChromiumOptions()
co.set_local_port(11112)
co.add_extension(r"Extension\Porxy")
page = WebPage(chromium_options=co)
page.get("https://www.ip138.com/")
while True:
host = input("host:")
port = input("port:")
# _dict = {
# "scheme": "http",
# "host": "your-proxy-ip",
# "port": 1234,
# "username": "your-username",
# "password": "your-password",
# }
proxy.Set_Ip(host,port)
page.refresh()
Set_Proxies_V2的方法详见点击查看源码,这是具体实现的办法,这个思路还是蛮巧妙的
以上就是全部的方案,可以在程序运行期间进行切换代理
常见问题
1、无法切换ip,
1.1 请仔细核对ip host信息是否正确,port端口信息是Int类型,非str类型
1.2 请核对是否开启访客模式,或者无痕模式,这这两种暂时是无法加载插件的,等后期再优化处理吧
当前仅支持登录后发布评论