pyppeteer可不可以在不关闭浏览器的情况下,在page层面切换代理?

我在使用代理的时候,按照这样配置

start_parm = {
                    # 启动chrome的路径
                    "executablePath": r"C:\Users\1\Desktop\spider(1)\spider\spider\chrome-win\chrome.exe",
                    # 关闭无头浏览器
                    "headless": False,
                    "dumpio": True,
                    "args": [
                        '--disable-infobars',  # 关闭自动化提示框
                        # '--window-size=1920,1080',  # 窗口大小
                        '--log-level=30',  # 日志保存等级, 建议设置越好越好,不然生成的日志占用的空间会很大 30为warning级别
                        '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36',  # UA
                        '--no-sandbox',  # 关闭沙盒模
                        '--start-maximized',  # 窗口最大化模式
                        f'--proxy-server=xxxxxx:11111',
                        'userDataDir="D:/UserData"'  # 用户文件地址
                    ],
                }

启动之后是可以使用代理的,但是每当切换代理地址的时候只能关闭浏览器,修改启动参数,这样不仅麻烦,还特别消耗资源。我有100个代理通道需要一起用,总不能启动100个浏览器吧。有没有在page层面切换代理的方法?

阅读 3.1k
1 个回答

在Pyppeteer里,代理设置是在浏览器级别的,不是页面级别的。这是因为代理设置是在启动浏览器时候用命令行参数传递的。所以一旦浏览器启动,代理设置就不能改了。你这种情况可能考虑要用代理池,可以试试这些代理池:ProxyPoolscylla

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进