轻识Logo
目录

    小技巧 | Get 到一个 Web 自动化方案,绝了!





    关注公众号简说Python
    回复关键字「 crx 」获取本文完整源码

    1. 前言

    无论是 Chrome,还是 Firefox 浏览器,它们的强大性在很大程度上都是依赖于海量的插件,让我们能高效办公

    那我们是否可以编写一个插件,让浏览器自动化完成一些日常工作,解放双手呢?

    答案是肯定的

    本篇文章以 Chrome 插件为例,结合一个实例,聊聊 Web 端自动化的另一种方案

    2. Chrome 插件

    Chrome 扩展插件运行于基于 Chromium 内核的浏览器

    包含:Chrome 浏览器、Microsoft Edge、360 浏览器等

    一个 Chrome 扩展插件有 3 类文件组成,包含:

    • 配置文件 manifest.json

    • js 脚本文件

    • 图片、css 等资源文件

    配置文件「 manifest.json 」用于配置扩展的名称、版本号、作者、图标 icon、弹出界面、权限、脚本路径等信息

    js 脚本文件包含 popup.js、background  和 content_scripts

    其中

    • popup.js 用于搭配 popup.html 使用,用于点击插件图标的时候展示页面及页面逻辑控制

    • background 用于定义一个后台页面,相当于一个常驻页面,生命周期和浏览器一致

    • content_scripts 用于注入 JS 脚本,它不会和页面中的脚本产生冲突

    3. 实战一下

    假设我们现在需要完成一个插件,在首次登录或登录失效时,自动完成登录操作

    3-1  创建项目

    我们创建一个文件夹,项目结构目录如下

    3-2  项目配置

    我们在 manifest.json 配置文件中,首先设置插件的基本信息

    # mainifest.json

    {
        "manifest_version"2//配置文件版本
        "name""auto_login"//插件名称
        "version""0.0.1"//插件版本

        //下面都是选填
        "description""自动登录"//描述信息
        "author""xag"//作者
        // 插件icon
        "icons": {
            "84""./image/icon.png"
        }
    ...

    然后,设置浏览器插件的图标及后台页面

    需要注意的是,后台页面 background 可以设置一个 HTML 页面,也可以设置 JS 脚本列表,且只能选择其中一种

    # mainifest.json

    // 浏览器右上角的图标和内容
    "browser_action": {
        "default_icon""./image/icon.png",
        "default_title""自动登录",
        "default_popup""./html/popup.html" //点击插件图标,弹出来的界面
    },
    //后台页面,JS/HTML只能选择一种
    "background": {
        "scripts": ["./js/background.js"],
        "persistent"true
    },
    ...

    接着,使用关键字「 content_scripts 」配置匹配规则及注入 JS 脚本

    # mainifest.json

    //content-scripts脚本设置
    "content_scripts": [
        {
            // "<all_urls>" 表示匹配所有地址
            "matches": ["<all_urls>"],
            // 执行JS
            "js": ["./js/content.js"],
            "run_at""document_end" //配置运行时间点
        },
        {
            "matches": ["https://****/"],
            "js": ["./js/content_vx.js"],
            "run_at""document_end"
        }
    ],

    ...

    这里设置所有的页面都会执行 content.js 脚本,当匹配到第二个页面时,执行 content_vx.js 脚本

    需要指出的是,run_at 设置为 document_end,代表当页面加载完成后,才会执行目标脚本

    最后,根据业务需要,使用关键字「 permissions 」定义权限

    PS:本例不涉及权限,可以省略设置

    # manifest.json

    ...
    //权限配置
        "permissions": [
            "contextMenus"// 右键菜单
            "storage"// 本地存储
            "webRequest"// 网络请求
            "webRequestBlocking"// 阻塞式的网络请求
            "<all_urls>"// 匹配的URL
            "tabs"// 标签
            "notifications" // 通知
        ]
    }

    3-3  编写注入脚本

    在 content_vx.js 文件中,根据需求操作 DOM 元素,完成自动化的操作

    比如,这里获取用户名、密码输入框,模拟输入,然后模拟点击登录按钮,完成登录的操作

    需要注意的是,如果 run_at 设置为 document_start,这里需要做延迟加载

    # content_vx.js

    //输入
    function input(inputElement, content{
        let evt = document.createEvent('HTMLEvents');
        evt.initEvent('input'truetrue);
        inputElement.value = content;
        inputElement.dispatchEvent(evt)
    }

    //模拟输入和提交表单
    //用户名
    const username_element = document.getElementById("ContentHtml_txtUserName");
    //密码
    const password_element = document.getElementById("txtPassword");

    //按钮
    const btn_element = document.getElementById("ContentHtml_btnLogin");

    //输入后,点击确认
    input(username_element, "**");
    input(password_element, "**");

    //登录
    btn_element.click();

    3-4  测试使用

    在定义好插件 icon 图标及 popup 页面后,我们可以进入到 Chrome 插件管理界面

    开启「 开发者模式 」,然后点击左侧的「 加载已解压的扩展程序 」加载上面创建的项目文件夹

    开启扩展插件,每次打开目标网站或退出登录时,会发现网页会自动完成登录操作

    4. 最后

    本例仅利用 content_scripts 注入一段脚本,通过操作 DOM 元素,将一个繁琐的登录操作做成自动化

    实际上,复杂的 Chrome 插件会涉及到 background 配置、浮框布局 JS 脚本、inject-scripts 引入脚本及他们之间的数据传输,这部分内容大家可以自行扩展

    我已经将文中所有源码上传到后台,关注公众号简说Python后回复关键字「 crx 」获取完整源码

    如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

    --END--



    扫码即可加我微信

    老表朋友圈经常有赠书/红包福利活动

    新玩法,以后每篇技术文章,点赞超过100+,我将在个人视频号直播带大家一起进行项目实战复现,快嘎嘎点赞吧!!!

    直播将在我的视频号:老表Max 中开展,扫上方二维码添加我微信即可查看我的视频号。


    大家的 点赞、留言、转发是博主的最大支持。



    学习更多:
    整理了我开始分享学习笔记到现在超过250篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了

    点赞”就是对博主最大的支持 

    浏览 31
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    举报
    皇妣昌福县太君吴氏焚告文
    皇妣昌福县太君吴氏焚告文 维先君、先夫人积徳累善,巩获蒙余泽,备位于朝。今天子始郊,加㤙群臣,皆许追
    轻识古籍
    0
    ?皇妣文
    ?皇妣文 某积恶深重,祸延先妣,䘮期迅?,既就外除。痛念劬劳,大恩莫报,号天扣地,无所逮及。呜呼哀哉
    轻识古籍
    0
    皇妣太夫人?文
    皇妣太夫人?文 嗣子具官修, 谨以清酌庶羞之奠,及平昌荥阳郡太君、安定郡永国太夫人告身四通,告于皇妣
    轻识古籍
    0
    焚黄文
    焚黄文 日者天子始见上帝于㤗坛,颁庆宇内。凡有列于朝者,皆得追荣其先,以广孝治。故我皇考班通九列,而
    轻识古籍
    0
    焚黄?文
    焚黄?文 维至治三年?次癸亥七月辛夘朔,男将仕郎、国子慱士贯,谨囙便人南归,令男卣具家馔之奠,昭告于
    轻识古籍
    0
    焚黄文
    焚黄文 绍兴七年,天子有事于明堂。天地报况,祉福盈衍,遂推恩大夫士之有列位于朝者而及其亲。非独广孝治
    轻识古籍
    0
    焚黄?文
    焚黄?文 嗣子承议郎厶敢昭告于皇考承事先生、皇妣孺人五十二娘之灵:通籍于朝,逮今十年,遇大礼者数矣,
    轻识古籍
    0
    仙源县太君夏侯氏墓碣
    仙源县太君夏侯氏墓碣 仙源县太君夏侯氏,济州巨野人,尚书驾部贠外郎讳晟之子,翰林侍读学士、尚书戸部侍
    轻识古籍
    0
    焚黄文一
    焚黄文一 圆丘?天,礼成肆赦,是为国家大典。岁在戊申,肇举于维扬,迨今十五年矣。天子圣明,干戈载戢,
    轻识古籍
    0
    点赞
    评论
    收藏
    分享

    手机扫一扫分享

    举报

    深圳SEO优化公司通辽营销网站价格鹰潭百姓网标王推广报价黔南网站优化按天收费多少钱营口网站优化排名公司新余网站制作海东百度竞价公司塘坑模板推广哪家好赣州seo优化报价达州关键词排名包年推广推荐河源百度标王防城港百度爱采购哪家好海南百姓网标王推广价格三明seo排名白山网站改版楚雄网站优化按天收费报价湘潭百度竞价哪家好中山关键词按天扣费价格湘潭网络营销价格文山网站关键词优化多少钱聊城百度竞价哪家好晋中设计网站报价定西百度竞价多少钱梅州SEO按天扣费哪家好林芝网络推广价格平湖模板制作光明推广网站林芝关键词按天收费价格盐田百度竞价包年推广台州网站关键词优化多少钱晋城SEO按天扣费推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化