pyppeteer跟selenium一样会有浏览器特征,所以需要修改,隐藏特征防止被识别。
主要有下面两点:
- 去除浏览器自动化参数
--enable-automation
- 去除
window.navigator.webdriver
等检测
@time:2020/04/04
import asyncio
import logging
import tkinter
from pyppeteer import launcher
launcher.AUTOMATION_ARGS.remove("--enable-automation")
from pyppeteer import launch
from lxml import etree
async def main():
start_parm = {
"executablePath": r"C:\Users\yq\AppData\Local\pyppeteer\pyppeteer\local-chromium\722234\chrome-win\chrome.exe",
"headless": False,
"args": [
'--disable-infobars',
'--log-level=30',
'--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',
'--no-sandbox',
'--start-maximized',
r'userDataDir=D:\project_demo\python_demo\spider_demo\JavaScript 逆向系列课\userdata'
browser = await launch(**start_parm)
page = await browser.newPage()
tk = tkinter.Tk()
width = tk.winfo_screenwidth()
height = tk.winfo_screenheight()
tk.quit()
await page.setViewport(viewport={'width': width, 'height': height})
js_text = """
() =>{
Object.defineProperties(navigator,{ webdriver:{ get: () => false } });
window.navigator.chrome = { runtime: {}, };
Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });
Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5,6], });
await page.evaluateOnNewDocument(js_text)
await page.goto('https://www.httpbin.org/headers')
page_text = await page.content()
print(page_text)
input('==========')
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
可以对出现的请求,进行拦截 类似mitmproxy。
@time:2020/04/04
import asyncio
import json
from jsonpath import jsonpath
from pyppeteer import launcher
launcher.AUTOMATION_ARGS.remove("--enable-automation")
from pyppeteer import launch
from pyppeteer.network_manager import Request, Response
async def intercept_request(req:Request):
await req.continue_()
async def intercept_response(res:Response):
if 'ext2020/apub/json/prevent.new' in res.url:
print('拦截到请求')
json_text = await res.text()
title_li = jsonpath(json.loads(json_text), '$..title')
for title in title_li:
print(title)
async def main():
start_parm = {
"executablePath": r"C:\Users\yq\AppData\Local\pyppeteer\pyppeteer\local-chromium\722234\chrome-win\chrome.exe",
"headless": False,
"args": [
'--disable-infobars',
'--start-maximized',
'--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',
browser = await launch(**start_parm)
page = await browser.newPage()
await page.setJavaScriptEnabled(enabled=True)
await page.setRequestInterception(True)
page.on('request', intercept_request)
page.on('response', intercept_response)
js_text = """
() =>{
Object.defineProperties(navigator,{ webdriver:{ get: () => false } });
window.navigator.chrome = { runtime: {}, };
Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });
Object.defineProperty(navigator, 'plugins', { get: () => [1, 2, 3, 4, 5,6], });
await page.evaluateOnNewDocument(js_text)
await page.goto('https://news.qq.com/')
await browser.close()
asyncio.get_event_loop().run_until_complete(main())
文章目录介绍环境部署pip installchromium下载快速使用应用技巧启动参数优化常用的参数其他参数示例窗口/可视区最大化隐藏浏览器特征拦截请求介绍注意,讲解的模块叫做 Pyppeteer,不是 Puppeteer。Puppeteer 是 Google 基于 Node.js 开发的一个工具,有了它我们可以通过 JavaScript 来控制 Chrome 浏览器的一些操作,当然也可以用...
在讲 python 的 pyppeteer 前,先来说下 Node 的 puppeteer 库:
puppeteer的中文意思是:操纵木偶的人,木偶师。
那么 Node 的 puppeteer 是什么呢?
Puppeteer 是一个 Node 库,它提供了高级的 API 来控制 Chrome/Chromium,通过 DevTools 协议。Puppeteer默认使用无头浏览器,但是通过配置可以控制完整的 Chrome/Chromium 浏览器。
英文原文地址:https://github.com/p
使用pyppeteer淘宝登录,获取Cookies
现在淘宝的商品搜索页必须要登录才能见,所以必须要cookies才能进行下一步操作。本期介绍如何使用pyppeteer登录淘宝,获取Cookies。
pyppeteer介绍
地址:https://github.com/miyakogi/pyppeteer
介绍:Unofficial Python port ofpuppeteerJa...
如果大家对 Python 爬虫有所了解的话,想必你应该听说过 Selenium 这个库,这实际上是一个自动化测试工具,现在已经被广泛用于网络爬虫中来应对 JavaScript 渲染的页面的抓取。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
但 Seleniu
NumPy是一个Python包。它代表“NumericPython”。它是一个由多维数组对象和用于处理数组的例程集合组成的库。Numeric,即NumPy的前身,是由JimHugunin开发的。也开发了另一个包Numarray,它拥有一些额外的功能。2005年,TravisOliphant通过将Numarray的功能集成到Numeric包中来创建NumPy包。这个开源项目有很多贡献者。使用NumPy,开发人员可以执行以下操作:数组的算数和逻辑运算。傅立叶变换和用于图形操作的例程。与线性代数有关的操作。NumPy拥有线性代数和随机数生成的内置函数。NumPy通常与SciPy(Scientific
python学习
教程(超级
详细)
必须超过50个字给你----------------------------
-------------------------------------------------------
0000000000000000000000000000000000000
python安装教程和Pycharm安装详细教程,分享给大家。
首先我们来安装python
1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载。
2、下载完成后如下图所示
3、双击exe文件进行安装,如下图,并按照圈中区域进行设置,切记要勾选打钩的框,然后再点击Customize installation进入到下一步:
4、对于上图中,可以通过Browse进行自定义安装路径,也可以直接点击Install进行安装,点击install后便可以完成安装了。
5、为了检查我们的p
分析的是一个航空网站,其实是我再找python执行js代码的资料的时候,发现了一个博主分析了这个网站的加密过程,然后我去跟着操作的时候,发现网站的加密部分代码发生了变化,不过在我不小心把网页关了之后,我实在找不到那篇文章了。。。。。所以我再说一下整个的分析过程,不然我就可以只说一下后面不同的部分了
需要安装pyppeteer、asyncio
pyppeteer中文教程:https://zhaoqi...
如果说在Python中还有一款自动化工具能和selenium媲美,那么无疑是pyppeteer,pyppeteer是puppeteer的Python版本,puppeteer是Google开源的一个js库,通过一系列高级接口和Chrome或Chromium在DevTools协议下交互,其实现功能如下:
生成页面的截图和PDF。
抓取SPA(单页应用程序)并渲染页面
自动提交表单,UI测试,键盘...
Eclipse是一款强大的集成开发环境,可以用于编写多种编程语言,包括Python。以下是使用Eclipse编写Python的教程:
1. 安装Eclipse和Python插件
首先需要安装Eclipse和Python插件。可以从Eclipse官网下载Eclipse,然后在Eclipse Marketplace中搜索并安装Python插件。
2. 创建Python项目
在Eclipse中创建一个新的Python项目。选择File -> New -> PyDev Project,输入项目名称和路径,然后点击Finish。
3. 创建Python文件
在项目中创建一个新的Python文件。选择File -> New -> PyDev Module,输入文件名称和路径,然后点击Finish。
4. 编写Python代码
在新创建的Python文件中编写Python代码。可以使用Eclipse提供的代码补全、语法检查等功能来提高编码效率。
5. 运行Python程序
在Eclipse中运行Python程序。选择Run -> Run As -> Python Run,然后选择要运行的Python文件,点击OK即可运行程序。
以上就是使用Eclipse编写Python的基本教程。希望对你有所帮助!