我在使用代理的时候,按照这样配置
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问该如何使用同一个代理服务器的多个通道呢?
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为控制自身解码)来强制为你解压缩。然后,你可以使用将数据流式传输到文件对象: 要遍历响