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

118次阅读
没有评论

共计 1197 个字符,预计需要花费 3 分钟才能阅读完成。

内容纲要

前言

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

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

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

常见问题

1、无法切换 ip,

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

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

正文完
 1
bgspider
版权声明:本站原创文章,由 bgspider 于2024-04-28发表,共计1197字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。