Hello! 欢迎来到盒子萌!

dp不关闭浏览器切换代理方案


avatar
bgspider 2024-04-28 50

前言

在使用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的方法详见点击查看源码,这是具体实现的办法,这个思路还是蛮巧妙的

image-20240428135411806

以上就是全部的方案,可以在程序运行期间进行切换代理

常见问题

1、无法切换ip,

1.1 请仔细核对ip host信息是否正确,port端口信息是Int类型,非str类型

1.2 请核对是否开启访客模式,或者无痕模式,这这两种暂时是无法加载插件的,等后期再优化处理吧

暂无评论

当前仅支持登录后发布评论