
文章插图
- 防止检测
async def main():browser = await launch(headless=False, args=['--disable-infobars'])page = await browser.newPage()await page.evaluateOnNewDocument('Object.defineProperty(navigator, "webdriver", {get: () => undefined})')await page.goto('https://movie.douban.com/chart')await asyncio.sleep(100)- 页面大小设置
async def main():width = 1366height = 768browser = await launch(headless=False, args=['--disable-infobars'])page = await browser.newPage()await page.setViewport({'width': width, 'height': height})await page.goto('https://movie.douban.com/chart')await asyncio.sleep(100)- 用户数据持久化
比如淘宝 , 平时我们浏览完淘宝后 , 关闭浏览器再打开 , 依然还是登录状态 。大家都知道 , 这是因为浏览器本地保存了Cookies的缘故 , 下次打开可以直接读取并保持登录状态 。这些信息一般保存在我们的用户目录下 , 如果我们能在浏览器启动的时候读取这些信息 , 那么启动的时候就可以恢复一些历史记录甚至是登录状态信息了 。
我们在使用Selenium或者Pyppeteer的时候 , 每次打开都是一个全新的浏览器 , 原因就是我们没有设置用户目录 , 如果设置了 , 那就可以读取一些信息在启动的时候加载上来 。Pyppeteer为我们提供了一个userDataDir参数来设置用户目录 , 这样就可以保持我们的访问状态了 。
async def main():width = 1366height = 768browser = await launch(headless=False, userDataDir='userdata', args=['--disable-infobars'])page = await browser.newPage()await page.setViewport({'width': width, 'height': height})await page.goto('https://mp.weixin.qq.com/')await asyncio.sleep(100)这里我们用微信公众号进行测试 , 首先运行一下 , 登陆一次公众号 , 然后我们可以打开当前目录下生成的userdata文件夹 , 里面内容如下:
文章插图
在此运行一下上面的代码 , 就直接进入我们的公众号管理界面 , 已经是登录状态了 , 就跳过了登录的流程 。当然了 , 我们知道Cookies基本都是有期限的 , 如果过期了就需要再次登录 。
Browser上面我们介绍了launch方法 , 它会返回一个Browser对象 , 我们来看看Browser类的定义:
class pyppeteer.browser.Browser(connection: pyppeteer.connection.Connection, contextIds: List[str], ignoreHTTPSErrors: bool, setDefaultViewport: bool, process: Optional[subprocess.Popen]=None, closeCallback: Callable[[], Awaitable[None]]=None, **kwargs)我们看到这个类的初始化参数有很多 , 但是我们上面基本上都是使用launch方法直接创建使用 。但是Browser类还是用于很多操作浏览器本身的方法 , 下面我们来介绍一些常用的 。- 开启无痕模式
async def main():width = 1366height = 768browser = await launch(headless=False, args=['--disable-infobars', f'--window-size={width}, {height}'])context = await browser.createIncogniteBrowserContext()page = await context.newPage()await page.setViewport({'width': width, 'height': height})await page.goto('https://mp.weixin.qq.com/')await asyncio.sleep(100)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 破了这几种爬虫加密算法后,我的路更近了「JS逆向3」
- 「Charles」抓包神器
- Kali技术分享 网站镜像神器Httrack安装及使用
- 硬盘检测修复神器:硬盘哨兵HardDisk Sentinel
- 快速、轻巧,强大!3 个下载神器,分分钟打造 NAS 下载机
- 黑客必用神器“msf”的post模块实战讲解
- 在安卓手机搭建kali环境,手机变成便携式渗透神器
- Python自带爬虫库urllib使用大全
- 免洗护发素可携带的护发神器
- 凭借这5步,我30分钟学会了Python爬虫
