七分醒博客
  • 首页
  • Affiliate Marketing
    • Adsense系列教程
    • Facebook广告投放
    • Youtube基础入门
  • 程序语言
  • 工具与技巧
  • 七分醒随笔
  • 联系方式
  1. 首页
  2. 七分醒随笔
  3. 正文

Pyppeteer如何加载chrome插件并测试

2019年09月12日 9014点热度 6人点赞 0条评论

目的

我想让浏览器的popup弹出的窗口转化成标签页形式,谷歌官方的puppeteer有page.load('popup')函数可用,但是pyppeteer并没有这个功能,测试了浏览器launch里添加参数不行(设置'openInExistingWindow': True,),js方式也没搞定(自身不会js也是硬伤),后来想到的解决方法是通过chrome插件来解决。

满足要求的插件是https://chrome.google.com/webstore/detail/open-link-in-same-tab-pop/jmphljmgnagblkombahigniilhnbadca?hl=en
但是在使用pyppeteer加载的时候出现了问题,官方的加载方式是:

browser = await launch({"headless": False,
                        "args": ['--load-extension=../chrome_extension/',
                                 '--disable-extensions-except=../chrome_extension/',]})

研究了chrome如何导出crx插件文件,和网络上直接下载的crx文件都不可加载提示错误:
无法加载以下来源的扩展程序:\Extensions\jmphljmgnagblkombahigniilhnbadca清单文件缺失或不可读。
Failed to load extension" Google Chrome expects a browser extension that does not exist anymore and throws the error message "Manifest file is missing or unreadable
通过把crx文件拖拽到扩展程序界面和在线安装也不行,提示错误:An error has occurred Installation is not enabled。
Failed to load extension

解决方法

根据https://eviloh.github.io/2018/08/05/headless-chrome-pptr%E5%88%9D%E6%8E%A2/ 这篇文章里面提到的,代码片段https://gist.github.com/GuilloOme/2bd651e5154407d2d2165278d5cd7cdb ,我下载下来直接放到上面的chrome_extension文件夹下就发现可以了,原来是插件加载需要使用解压后的插件,没解压的缺少manifest.json文件当然加载失败了,后续更改插件路径为解压后的插件路径就可用了。

chrome_extension=r'D:\chrome_extension\jmphljmgnagblkombahigniilhnbadca\2.1_0'
    browser = await launch({
        'headless': False,
        'args': [
            '--no-sandbox',
            '--load-extension={}'.format(chrome_extension),
            '--disable-extensions-except={}'.format(chrome_extension),
        ]
    })

如何获得解压的chrome插件

在自己常用的chrome插件管理后台chrome://extensions/,安装要在pyppeteer上用的扩展插件,点击右上角的开发者模式,打开后,会看到插件上多了一个id复制后面的那长串字符,在自己的硬盘上找到这个命名的文件夹即可。如果windows系统一般是在C:\Users\你的电脑用户名\AppData\Local\Google\Chrome\User Data\Default\Extensions,如果是其他系统就找到chrome的用户目录里面去找找,或者安装有EveryThing这种全盘搜索的软件进行搜索会更方便。
chrome开发者模式

总结

chrome/chromium加载插件目前只在'headless': False形式下可用,不可见的状态下是无法加载的。
自己的js和对于chrome插件了解的实在是太少,后续搜索chrome插件开发和英文版错误提示Manifest file is missing 就知道原来是缺少manifest,如果能早点看到这个提示就应该会理解应该是使用解压后的插件了。走了很多弯路,所幸最终解决了,如果要加载多个插件,那么就把多个插件路径用逗号隔开写到后面就可以了。

本文由七分醒博客原创,转载请注明:/pyppeteer-install-chrome-extensions-and-test.html

文章同步更新在知乎:七分醒 - 知乎

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: chrome多个插件测试 chrome插件解压获取 Pyppeteer加载chrome插件 Pyppeteer加载插件
最后更新:2019年09月12日

七分醒

/about-me

点赞
< 上一篇
下一篇 >
2TB终身网盘
建了个群,想一起交流的可以加入下
最新 热点 随机
最新 热点 随机
解决中文Windows11编译chromium过程中报错gbk问题 什么人必须买抗投诉服务器DMCA Ignored Hosting APP里面增加cloak的跑法可行性研究 Facebook Dating友缘是什么账号,能用来干什么? 【Fingerprint Browser系列】十、闲话聊一聊Fingerprint Browser的用途 【Fingerprint Browser系列】九、 编写自己的Fingerprint Browser以及指纹信息的来源
Pyppeteer如何加载chrome插件并测试 使用pyppeteer替代selenium模拟登录谷歌Youtube 【Fingerprint Browser系列】七、python改变浏览器指纹 聊一聊2018年2月TopBuzz大量K号,以及未来一年的操作方法 ubuntu14.04安装bitpay钱包失败的解决办法 【Fingerprint Browser系列】三、更多的检测手段与Fingerprint Browser选购方案
标签聚合
Youtube Adsense Adsense TrafficArmor 浏览器指纹 facebook广告投放 pyppeteer markdown插件 Fingerprint Browser

COPYRIGHT © 2020 七分醒博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

关于我: about-me 友情链接: 七分醒的小伙伴们