V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1995bugme
V2EX  ›  程序员

使用 selenium 爬取数据时,如何在当前已经创建的浏览器实例上,动态切换代理 ip?

  •  
  •   1995bugme · 229 天前 · 1769 次点击
    这是一个创建于 229 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教一个问题,使用 java 、selenium 、chromedriver 爬取数据的时候,如何在当前已经打开的浏览器实例上,动态切换代理 ip ?之前采取的措施是,如果要切换代理 ip ,那就关闭浏览器实例再重新创建一个,但是这种反复关闭浏览器实例再创建的操作,开销比较大。有什么办法能够在不关闭浏览器实例的情况下,动态切换代理 ip 么?
    13 条回复    2024-04-08 17:31:04 +08:00
    binsys
        1
    binsys  
       229 天前
    再套一层代理,然后去控制代理切换代理。
    binsys
        2
    binsys  
       229 天前
    浏览器-代理 A-代理 B-互联网
    代理 A 提供给浏览器的地址不变,比如 127.0.0.1:8008
    代理 B 自己切换 upstream
    hanssx
        3
    hanssx  
       229 天前
    插件
    macaodoll
        4
    macaodoll  
       229 天前 via Android
    自建隧道?
    ik
        5
    ik  
       229 天前 via iPhone
    轮训的话随便一个四层代理都可以, 需要制定切换可以用 clash ,调 api 切
    defaw
        6
    defaw  
       229 天前
    http 代理,在 http 代理里面换
    LeegoYih
        7
    LeegoYih  
       229 天前
    我用 chrome 没解决,最后买了个贵的池。
    我看有解决方案说是 firefox 可以调 api 切换,没试过。
    0o0O0o0O0o
        8
    0o0O0o0O0o  
       229 天前 via iPhone
    同 #1
    jettzhang
        9
    jettzhang  
       229 天前
    SwitchyOmega 插件
    pagxir
        10
    pagxir  
       229 天前 via Android
    代理类型都一样的话,用 iptables 也可以。把旧 nat 规则删掉,然后换新的,这样旧的不会马上断,新建的会用新的代理。
    ClericPy
        11
    ClericPy  
       229 天前
    隧道代理. 不过你得主动断开旧连接, 在同一次连接时候隧道代理不切换 IP. 我是自己写的隧道代理所以随时想切换就切换

    至于关闭浏览器实例的问题, 可以考虑一下隐私模式, Chrome cdp 通过新建一个个 Browser Context 的时候指定特定的 proxyServer, 这个开销比较小, 而且开一大堆浏览器上下文关闭时候会清理垃圾文件, 不会 CDP 的话就没办法了
    1995bugme
        13
    1995bugme  
    OP
       228 天前
    多谢各位的回复,临时被指派爬取数据,在这方面自己并不擅长,各位提到的这些技术点,我还需要消化一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   925 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:00 · PVG 06:00 · LAX 14:00 · JFK 17:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.