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

Pyppeteer如何加载chrome插件并测试

2019年09月12日 9124点热度 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,如果能早点看到这个提示就应该会理解应该是使用解压后的插件了。走了很多弯路,所幸最终解决了,如果要加载多个插件,那么就把多个插件路径用逗号隔开写到后面就可以了。

本文由三分醉博客原创,转载请注明:https://www.sanfenzui.com/pyppeteer-install-chrome-extensions-and-test.html

文章同步更新在知乎:三分醉 - 知乎

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

三分醉

https://www.sanfenzui.com/about-me

点赞
< 上一篇
下一篇 >
2TB终身网盘
建了个群,想一起交流的可以加入下
最新 热点 随机
最新 热点 随机
解决中文Windows11编译chromium过程中报错gbk问题 什么人必须买抗投诉服务器DMCA Ignored Hosting APP里面增加cloak的跑法可行性研究 Facebook Dating友缘是什么账号,能用来干什么? 【指纹浏览器系列】十、闲话聊一聊指纹浏览器的用途 【指纹浏览器系列】九、 编写自己的指纹浏览器以及指纹信息的来源
Adespresso批量管理Facebook广告投放 Luminati LPM在Linux下安装教程 从今天开始在广告中国写SEO做Adsense实战记录贴 解决中文Windows11编译chromium过程中报错gbk问题 2020跨境电商TikTok要做的2个方向 如何在屏蔽了右键和选中文本的网页上复制文本
标签聚合
指纹浏览器 TrafficArmor Youtube Adsense Adsense 浏览器指纹 pyppeteer markdown插件 facebook广告投放

COPYRIGHT © 2020 三分醉博客. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

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