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

Pyppeteer如何加载chrome插件并测试

2019年09月12日 7380点热度 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终身网盘
最新 热点 随机
最新 热点 随机
代群友招聘FB广告投手,谷歌投手 什么人必须买抗投诉服务器DMCA Ignored Hosting APP里面增加cloak的跑法可行性研究 Facebook Dating友缘是什么账号,能用来干什么? 【指纹浏览器系列】十、闲话聊一聊指纹浏览器的用途 【指纹浏览器系列】九、 编写自己的指纹浏览器以及指纹信息的来源
【指纹浏览器系列】八、java、go、c#、php、rust更改浏览器指纹信息 wordpress博客添加Adsense广告代码以及ads.txt文件的作用 更改已经安装的中文浏览器语言为英文 AirTest连接雷电模拟器的使用笔记 pyppeteer使用遇到的bug及解决方法 从今天开始在广告中国写SEO做Adsense实战记录贴
标签聚合
pyppeteer markdown插件 Youtube Adsense Adsense TrafficArmor facebook广告投放 浏览器指纹 指纹浏览器

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

THEME KRATOS MADE BY VTROIS

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