当前位置: 首页 > 知识库问答 >
问题:

python - pyppeteer如何使用如下的代理?

郭博涉
2023-08-03

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

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',  # 窗口最大化模式                        # '--proxy-server=' + f'{proxy_ip[a]["ip"]:{proxy_ip[a]["port"]}}'                        f'--proxy-server=xxxxxx:11111',                        'userDataDir="D:/UserData"'  # 用户文件地址                    ],                }

然后再await page.authenticate({'username': 'xxx', 'password': 'xxx'})
这样是OK的。
但是,由于我想使用的是隧道代理,代理有多个通道,用requests库是这样的实例代码:

import requestsproxyAddr = ""authKey = ""password = ""proxyUrl = "http://%(user)s:%(password)s:%(channel)s@%(server)s" % {    "user": authKey,    "password": password,    "channel": "channel-1",    "server": proxyAddr,}proxies = {    "http": proxyUrl,    "https": proxyUrl,}resp = requests.get("https://ip.cn/api/index?ip=&type=0", proxies=proxies)print(resp.text)

多了一个参数channel,如果直接把proxy-server改成proxyUrl会报错,net::ERR_NO_SUPPORTED_PROXIES
而如果这样

await page.authenticate({'username': 'xxx', 'password': 'xxx', 'channel': 'channel-1'})await page2.authenticate({'username': 'xxx', 'password': 'xxx', 'channel': 'channel-2'})

,看似能连着用,但实际上无法使用1和2两个通道,都是用的隧道代理中默认的channel-1。
请pyppetter问该如何使用同一个代理服务器的多个通道呢?

共有1个答案

元昊苍
2023-08-03
import asynciofrom pyppeteer import launchasync def main():    browser1 = await launch(args=['--proxy-server=http://proxyserver:port'])    page1 = await browser1.newPage()    await page1.authenticate({'username': 'user1', 'password': 'pass1'})    await page1.goto('http://example.com')    await page1.screenshot({'path': 'example1.png'})    browser2 = await launch(args=['--proxy-server=http://proxyserver:port'])    page2 = await browser2.newPage()    await page2.authenticate({'username': 'user2', 'password': 'pass2'})    await page2.goto('http://example.com')    await page2.screenshot({'path': 'example2.png'})    await browser1.close()    await browser2.close()asyncio.get_event_loop().run_until_complete(main())

把username、password和proxyAddr换为你实际值。

 类似资料:
  • 问题内容: 我试图使用Python从Internet下载某些内容,但我使用的是urllib模块,但无法正常工作。我希望能够将下载的文件保存到我选择的位置。如果有人可以用清晰的例子向我解释如何做到这一点,将不胜感激。 问题答案: 我建议像这样使用urllib2: 您甚至可以将其缩短为(尽管,如果您打算将每个单独的调用括在-中,则不想将其缩短):

  • 本文向大家介绍python爬虫神器Pyppeteer入门及使用,包括了python爬虫神器Pyppeteer入门及使用的使用技巧和注意事项,需要的朋友参考一下 前言 提起selenium想必大家都不陌生,作为一款知名的Web自动化测试框架,selenium支持多款主流浏览器,提供了功能丰富的API接口,经常被我们用作爬虫工具来使用。但是selenium的缺点也很明显,比如速度太慢、对版本配置要求严

  • 本文向大家介绍如何使用python代码操作git代码,包括了如何使用python代码操作git代码的使用技巧和注意事项,需要的朋友参考一下 git简介 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subvers

  • 我正在寻找一种在python中下载pdf文件的方法,我看到了关于推荐urllib模块的其他问题的答案。我试图用它下载一个pdf文件,但是当我试图打开下载的文件时,一条消息显示该文件无法打开。 错误消息 这是我使用的代码- 我做错了什么?此外,该文件会自动保存到python文件所在的目录中。如何更改它保存到的位置? 编辑-我再次尝试使用示例pdf的链接,http://unec.edu.az/appl

  • 问题内容: 我正在尝试使用的模块从网络下载并保存图像。 这是我使用的(工作)代码: 你能帮助我从响应中使用什么属性吗? 问题答案: 你可以使用对象,也可以遍历响应。 默认情况下,使用类似文件的对象不会解码压缩的响应(使用GZIP或deflate)。你可以通过将属性设置为True(requests将其设置False为控制自身解码)来强制为你解压缩。然后,你可以使用将数据流式传输到文件对象: 要遍历响