Chrome之谷歌插件开发

  最近碰到一个需求,需要在某个平台上批量的添加好友,如果是人工点击,可以操作,但是效率并不高,人工成本较高.就打算使用浏览器插件的方式来完成这件重复性的工作.

  介绍:

    Chrome插件的本质就是一个由 manifest.json 文件和插件所需要的图片,css,html,js资源组成的一个web页面,只是和传统的web页面不同的,它是以chrome浏览器为宿主运行的一个web程序。总的来说就是一个使用前端的技术就可以完成的内容

  使用:

    1. 首先,我们需要manifest.json文件来声明我要写的插件的相关信息。可以把manifest.json理解成插件的入口,即chrome需要通过manifest.json来理解你的插件要 引用哪些文件需要哪些权限插件图标等信息。

    文件可以参考官网  或者 其他   里面有详细的参数说明

1{ 2 "name":"LY-helper", 3 "version":"2.0", 4 "manifest_version":2, 5 "description":"**平台帮手,批量添加好友,统计好友数据", 6 "icons": { 7 "128": "icon128.png" 8 }, 9 "browser_action":{ 10 "default_icon":"icon128.png", 11 "default_title":"ly-helper", 12 "default_popup":"popup.html" 13 }, 14 "permissions":[ 15 "https://www.linkedin.com/" 16 ], 17 "content_scripts":[ 18 { 19 "matches":["https://www.linkedin.com/mynetwork/"], 20 "js":["js/jquery-1.8.0.min.js","js/ly.js"] 21 } 22 ] 23 }
  • name 属性定义了插件的名称
  • version 定义了插件的开发版本号
  • description 定义了插件的详细描述信息
  • app 对象定义了要打开的URL地址
  • iocns 对象定义了几种不同尺寸的图标的地址
  • requirements 对象定义了需要用到资源权限 

    目录结构大致如下:

    设置logo和对应的点击页面: icon.png   popup.html

    popup.html示例:

1<!doctype html> 2<html> 3<head> 4<title>Getting Started Extension's Popup</title> 5<style> 6body{min-width:357px;overflow-x:hidden}img{margin:5px;border:2px solid #000;vertical-align:middle;width:75px;height:75px} 7</style> 8<script src="js/jquery-1.8.0.min.js"></script> 9<script src="js/ly.js"></script> 10</head> 11<body> 12</body> 13</html>

  可以在使用的时候,进行代码压缩处理

  js目录中存放相关的js代码

    2.插件使用

      打开浏览器输入地址: chrome://chrome/extensions

      开启开发者模式:

      点击:"加载已解压的扩展程序" 将开发的文件目录加载进来

    打开相应的网站即可实现效果

    另外可以不自己进行插件开发,直接使用油猴进行脚本的开发工作:

      1. 下载油猴浏览器插件

      2. 安装

       3. 新建一个脚本即可急速开发

1// ==UserScript== 2// @name in-friends-add 3// @namespace http://dajiala.com 4// @version 0.1 5// @description 领英平台自动添加好友 6// @author X-Wolf 7// @match https://www.linkedin.com/* 8// @grant GM_xmlhttpRequest 9// ==/UserScript== 10 11(function() { 12 'use strict'; 13 var api = ''; 14 var keywords = ['ceo','投资经理']; //关键词库 15 //时间段限制 16 var myD = new Date(); 17 var hour = myD.getHours(); 18 if(hour>0 && hour < 7){ 19 sleep(60*30*1000); //休息30分钟 20 location.href = 'https://www.linkedin.com/mynetwork/'; 21 } 22 23 var path = window.location.pathname; 24 // 领英好友添加(1.关键词 2.推荐 3.好友圈) 25 if(path == '/mynetwork/'){ //推荐 26 var timer = setInterval(function(){ 27 document.documentElement.scrollTop = document.documentElement.scrollTop+100; 28 addFriends(); 29 },4000); 30 31 32 } else if(path == '/search/results/people/'){ //关键词 33 //添加关键词好友 34 var timer2 = setInterval(function(){ 35 document.documentElement.scrollTop = document.documentElement.scrollTop+50; 36 addKeywordFriends(); 37 },10000); 38 } else if(path == '/mynetwork/invite-connect/connections/'){ //好友列表 39 40 var friend = $('.mn-connections__header').find('h1').text(); 41 console.log('统计:'+friend); 42 GM_xmlhttpRequest({ 43 method: "POST", 44 url: api+"/other/addInFriendStat?friend="+friend, 45 dataType: "json", 46 headers: { 47 "Content-Type": "application/json" 48 }, 49 onload: function(ret){ 50 result = $.parseJSON(ret.responseText); 51 console.log(result); 52 } 53 }); 54 sleep(1000*10); 55 //跳转到首页 56 location.href = 'https://www.linkedin.com/mynetwork/'; 57 } 58 59 //添加好友 60 function addFriends(){ 61 $('.discover-entity-card').each(function(index){ 62 console.log(index); 63 if(index == 2){ 64 var name = $(this).find('.discover-person-card__name').text(); 65 console.log('添加好友'+name); 66 67 //发送好友请求 68 var occupation = $(this).find('.discover-person-card__occupation').text(); 69 var link = $(this).find('.discover-person-card__image-link').attr('href'); 70 var source = 2; 71 var that = $(this); 72 GM_xmlhttpRequest({ 73 method: "POST", 74 url: api+"/other/inFriendApply?name="+name+'&occupation='+occupation+'&link='+link+'&source='+source, 75 dataType: "json", 76 headers: { 77 "Content-Type": "application/json" 78 }, 79 onload: function(ret){ 80 var result = $.parseJSON(ret.responseText); 81 //添加成功,计算已经添加的数量 82 console.log('好友添加结果:'+result.msg); 83 console.log('是否达到上限:'+result.data.limit); 84 if(result.data.limit){ //达到上限,跳转搜索页面 85 var keyword = getKeyword(); 86 console.log('随机关键词:'+keyword); 87 location.href = 'https://www.linkedin.com/search/results/people/?keywords='+keyword+'&origin=CLUSTER_EXPANSION'; 88 }else{ 89 console.log('添加好友操作'); 90 that.find('.mt2').find('button').trigger('click'); 91 } 92 } 93 }); 94 sleep(300); 95 } 96 97 }); 98 } 99 100 function addKeywordFriends(){ 101 var page = getUrlParam('page'); 102 var keyword = getUrlParam('keywords'); 103 //获取关键词数据 104 $('.search-results__list').find('li').each(function(index){ 105 var name = $(this).find('.actor-name').text(); 106 var link = $(this).find('.search-result__result-link').attr('href'); 107 var occupation = $(this).find('.search-result__info').find('p').eq(0).find('span').text(); 108 var rank = $(this).find('.dist-value').text(); 109 console.log('名称:'+name+' 链接:'+link+' 职业:'+occupation+'级别:'+rank); 110 var source = 1; //关键词搜索 111 var that = $(this); 112 var operation = $.trim($(this).find('button').text()); 113 console.log('操作:'+operation); 114 if(name && operation == '加为好友'){ 115 console.log('需要添加的好友:'+name); 116 GM_xmlhttpRequest({ 117 method: "POST", 118 url: api+"/other/inFriendApply?name="+name+'&occupation='+occupation+'&link='+link+'&source='+source+'&keyword='+keyword, 119 dataType: "json", 120 headers: { 121 "Content-Type": "application/json" 122 }, 123 onload: function(ret){ 124 var result = $.parseJSON(ret.responseText); 125 console.log('添加申请:'+result.msg+' 上限:'+result.data.limit); 126 //添加成功,计算已经添加的数量 127 if(result.data.limit){ 128 location.href = 'https://www.linkedin.com/mynetwork/invite-connect/connections/'; 129 }else{ 130 //触发添加好友操作 131 that.find('.search-result__actions').find('button').trigger('click'); 132 sleep(2000); 133 $('.send-invite__actions').find('button').eq(1).trigger('click'); 134 //location.href = location.href; 135 location.href = 'https://www.linkedin.com/mynetwork/'; 136 } 137 138 } 139 }); 140 } 141 //sleep(5000); 142 }); 143 144 sleep(2000); 145 //分页跳转 146 var pageNum = typeof(page) == 'undefined' ? 1 : page; 147 console.log(pageNum); 148 location.href = 'https://www.linkedin.com/search/results/people/?keywords='+keyword+'&origin=CLUSTER_EXPANSION&page='+(parseInt(pageNum)+1); 149 } 150 151 //休眠时间 152 function sleep(numberMillis){ 153 var now = new Date(); 154 var exitTime = now.getTime() + numberMillis; 155 while (true) { 156 now = new Date(); 157 if (now.getTime() > exitTime) 158 return; 159 } 160 } 161 //获取分页参数 162 function getUrlParam(name) 163 { 164 var url = document.location.toString(); 165 var urlArr = url.split('?'); 166 if(urlArr.length > 1){ 167 var arr; 168 var params = urlArr[1].split('&'); 169 170 for(var i=0; i< params.length; i++){ 171 arr = params[i].split('='); 172 if(arr != null && arr[0] == name){ 173 return arr[1]; 174 } 175 } 176 }else{ 177 return 1; 178 } 179 } 180 //获取关键词 181 function getKeyword(){ 182 var index = Math.floor((Math.random()*keywords.length)); 183 console.log('索引值:'+index); 184 return keywords[index]; 185 } 186 187 console.log('当前访问路径:'+path); 188 189})();
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Chrome之谷歌插件开发 - HelloWorld