淘宝验证码最新突破指南,新神器 Pyppeteer!
阅读本文大概需要 10 分钟。
”
Chromium 是谷歌为了研发 Chrome 而启动的项目,是完全开源的。二者基于相同的源代码构建,Chrome 所有的新功能都会先在 Chromium 上实现,待验证稳定后才会移植,因此 Chromium 的版本更新频率更高,也会包含很多新的功能,但作为一款独立的浏览器,Chromium 的用户群体要小众得多。两款浏览器“同根同源”,它们有着同样的 Logo,但配色不同,Chrome 由蓝红绿黄四种颜色组成,而 Chromium 由不同深度的蓝色构成。
![](/assets/blank.gif)
安装
快速上手
from pyquery import PyQuery as pq
url = 'http://quotes.toscrape.com/js/'
response = requests.get(url)
doc = pq(response.text)
print('Quotes:', doc('.quote').length)
- 分析网页源代码数据,如果数据是隐藏在 HTML 中的其他地方,以 JavaScript 变量的形式存在,直接提取就好了。
- 分析 Ajax,很多数据可能是经过 Ajax 请求时候获取的,所以可以分析其接口。
- 模拟 JavaScript 渲染过程,直接抓取渲染后的结果。
from pyppeteer import launch
from pyquery import PyQuery as pq
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('http://quotes.toscrape.com/js/')
doc = pq(await page.content())
print('Quotes:', doc('.quote').length)
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('http://quotes.toscrape.com/js/')
await page.screenshot(path='example.png')
await page.pdf(path='example.pdf')
dimensions = await page.evaluate('''() => {
return {
width: document.documentElement.clientWidth,
height: document.documentElement.clientHeight,
deviceScaleFactor: window.devicePixelRatio,
}
}''')
print(dimensions)
# >>> {'width': 800, 'height': 600, 'deviceScaleFactor': 1}
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
![](/assets/blank.gif)
详细用法
开启浏览器
- ignoreHTTPSErrors (bool): 是否要忽略 HTTPS 的错误,默认是 False。
- headless (bool): 是否启用 Headless 模式,即无界面模式,如果 devtools 这个参数是 True 的话,那么该参数就会被设置为 False,否则为 True,即默认是开启无界面模式的。
- executablePath (str): 可执行文件的路径,如果指定之后就不需要使用默认的 Chromium 了,可以指定为已有的 Chrome 或 Chromium。
- slowMo (int|float): 通过传入指定的时间,可以减缓 Pyppeteer 的一些模拟操作。
- args (List[str]): 在执行过程中可以传入的额外参数。
- ignoreDefaultArgs (bool): 不使用 Pyppeteer 的默认参数,如果使用了这个参数,那么最好通过 args 参数来设定一些参数,否则可能会出现一些意想不到的问题。这个参数相对比较危险,慎用。
- handleSIGINT (bool): 是否响应 SIGINT 信号,也就是可以使用 Ctrl + C 来终止浏览器程序,默认是 True。
- handleSIGTERM (bool): 是否响应 SIGTERM 信号,一般是 kill 命令,默认是 True。
- handleSIGHUP (bool): 是否响应 SIGHUP 信号,即挂起信号,比如终端退出操作,默认是 True。
- dumpio (bool): 是否将 Pyppeteer 的输出内容传给 process.stdout 和 process.stderr 对象,默认是 False。
- userDataDir (str): 即用户数据文件夹,即可以保留一些个性化配置和操作记录。
- env (dict): 环境变量,可以通过字典形式传入。
- devtools (bool): 是否为每一个页面自动开启调试工具,默认是 False。如果这个参数设置为 True,那么 headless 参数就会无效,会被强制设置为 False。
- logLevel (int|str): 日志级别,默认和 root logger 对象的级别相同。
- autoClose (bool): 当一些命令执行完之后,是否自动关闭浏览器,默认是 True。
- loop (asyncio.AbstractEventLoop): 时间循环对象。
from pyppeteer import launch
async def main():
await launch(headless=False)
await asyncio.sleep(100)
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
![](/assets/blank.gif)
from pyppeteer import launch
async def main():
browser = await launch(devtools=True)
page = await browser.newPage()
await page.goto('https://www.baidu.com')
await asyncio.sleep(100)
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
from pyppeteer import launch
async def main():
browser = await launch(headless=False)
page = await browser.newPage()
await page.goto('https://www.taobao.com')
await asyncio.sleep(100)
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
from pyppeteer import launch
width, height = 1366, 768
async def main():
browser = await launch(headless=False,
args=[f'--window-size={width},{height}'])
page = await browser.newPage()
await page.setViewport({'width': width, 'height': height})
await page.goto('https://www.taobao.com')
await asyncio.sleep(100)
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
from pyppeteer import launch
async def main():
browser = await launch(headless=False, args=['--disable-infobars'])
page = await browser.newPage()
await page.goto('https://login.taobao.com/member/login.jhtml?redirectURL=https://www.taobao.com/')
await page.evaluate(
'''() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }''')
await asyncio.sleep(100)
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
from pyppeteer import launch
async def main():
browser = await launch(headless=False, userDataDir='./userdata', args=['--disable-infobars'])
page = await browser.newPage()
await page.goto('https://www.taobao.com')
await asyncio.sleep(100)
asyncio.get_event_loop().run_until_complete(main())
![](/assets/blank.gif)
![](/assets/blank.gif)
淘宝验证码最新突破指南,新神器 Pyppeteer!相关推荐
- 淘宝开放平台开发指南之熟悉API族
淘宝开放平台开发指南之熟悉API族 2010-02-27 09:22:12| 分类: 开发项目资料|字号 订阅 淘宝作为电子商务市场的超级航母,在电子商务基础服务领域,经过多年的沉淀和革新,围绕电子 ...
- 淘宝店铺商品发布API(新)接口,店铺上传接口代码对接教程
淘宝店铺商品发布API(新)接口,整理好一套淘宝店铺发布接口,店铺上传接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018) key String 是 ...
- 淘宝npm镜像源换新地址
简介:用CNPM/淘宝源的开发者们请注意,淘宝NPM 镜像站喊你切换新域名啦. 新的Web 站点:https://npmmirror.com,Registry Endpoint:https://reg ...
- deep learning 淘宝验证码识别
2014年底验证码识别称为一个热门的话题,各种12306抢票软件层出不穷,百度,搜狗,360等公司推出了火车票抢票软件.在给人们带来便利的同时,当然给黄牛有了可乘之机.下面介绍几种我们常见的验证码. ...
- 淘宝 NPM 镜像站切换新域名啦
淘宝 NPM 镜像站切换新域名啦 https://zhuanlan.zhihu.com/p/432578145 npm 更换淘宝镜像源 https://www.jianshu.com/p/a5efac ...
- 别只用 Selenium,新神器 Pyppeteer 绕过淘宝更简单!
作者 | 崔庆才 来源 | 进击的Coder 如果大家对 Python 爬虫有所了解的话,想必你应该听说过 Selenium 这个库,这实际上是一个自动化测试工具,现在已经被广泛用于网络爬虫中来应对 ...
- 淘宝npm镜像源换新地址,npm设置最新淘宝镜像
原淘宝 npm 域名停止 http://npm.taobao.org 和 http://registry.npm.taobao.org 在 2022.06.30 号正式下线和停止 DNS 解析. 域名 ...
- 互联网晚报 | 10月12日 星期二 | 小鹏汽车第10万辆整车正式下线;华为获批生产医疗器械;全国淘宝村数量突破7000...
今日看点 ✦ 全球PC市场出货量连续6个季度实现增长,联想集团市占率蝉联第一 ✦ 小红书回应赴港IPO:阶段性与资本市场保持沟通,但暂无明确IPO计划 ✦ 2021年淘宝村名单出炉,全国淘宝村数量已突 ...
- 星巴克中国啡快在支付宝、淘宝等多平台焕新上线
日前,星巴克中国啡快™服务多平台焕新上线,登陆支付宝.淘宝.口碑.高德多个App平台,不仅进一步丰富了线上点单功能.优化顾客体验,还在星巴克App上新增了预约功能,让提前点单.到店即拿即享的过程更加随 ...
最新文章
- 懒加载 字典转模型 自定义cell
- jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例
- oracle 截取字段长度substr
- linux grep 例子,Linux中Grep常用的15个例子
- 深入理解计算机系统 系统软件 硬件 文件 进程 虚拟内存
- 云服务器开启ftp_FTP是什么?FTP和虚拟主机的关系
- python flask快速入门与进阶 百度云_Python Flask快速入门与进阶
- linux目录树(书本上看到)
- Python基础学习数值运算之内建函数
- toughradius 配置mysql_ToughRADIUS 安装进阶篇
- 列出最少8种开源软件_您的公司可以支持和维持开源的8种方式
- sql子句的执行顺序_SQL Server查询执行计划– WHERE子句的示例
- 无法访问hadoop yarn8088端口的解决方法
- 计算机网络为什么要分层?
- centos双网卡不能同时工作解决
- 第二批鸿蒙手机排名,华为郑重宣布,第二批升级鸿蒙的十款手机,荣耀30系列上榜!...
- IP网络主动测评系统
- Linux下C/C++实现(网络流量分析-NTA)
- 魏文王问扁鹊的注释_扁鹊见魏文王是怎么回事 魏文王问扁鹊的典故故事
- [codeforces 718E]Matvey's Birthday