微博超话批量关注、签到、发帖、评论、捞贴一键脚本(油猴扩展版)
之前写过一个微博超话批量关注、签到、发帖、捞贴的脚本,还录了视频,代码基于魂签浏览器扩展。因为扩展作者近来没有更新过代码,现有的构建程序在新版的浏览器下执行出错,所以我fork了一份做了修改并维护。
批量操作原理,就是先使用Fiddler或Charles等工具,抓取用户真实点击时HTTP请求的URI和上下行数据,脚本同样请求即可。浏览器扩展权限很大,从脚本里发起的操作基本等同于用户的直接操作。只要用户已经登录过微博,脚本操作可以直接使用其cookie,不存在登录状态问题
以 批量发帖 为例,发帖 HTTP请求代码:
1 | const rsp = await axios({ |
数据直接配置在脚本里:
1 | let chaohuas = [{ |
这里配置了两条带图微博,会分别发在两个超话,详细说明可参考开头的视频。
视频虽然浏览量不高,但还是有一些同学使用并提出了问题和建议,其中就有希望能在 油猴 扩展下使用。考虑到 魂签 扩展确实小众,且没有上架官方商店,只能以开发者模式使用,而油猴受众更广,资料更多,对新人更友好,于是决定做一版油猴脚本。
为了维护方便,最大可能保持两个扩展所用脚本代码的一致性,只对不兼容的地方做了调整。
一个不同是,魂签扩展界面上,可以直接点击执行脚本,也可以设置定时运行。油猴扩展的机制是进入匹配网站时,自动运行脚本。批量签到 等操作,还是希望用户主动点击执行,所以油猴版采用的方案是在网页之上添加一层操作界面,包括 关闭、批量关注 等按钮,供用户操作。
以 批量关注 脚本为例,界面相关代码如下:
1 | // 容纳按钮的容器,同时做互斥,可能多个脚本共用 |
关注、签到、发帖和捞贴分成了4个扩展脚本,可能单个使用也可能同时使用,对应按钮都放在同一个容器,多个脚本也只会创建一个容器,同时也保证只执行一次公共逻辑。
注意一下 CSS
文件的引入方式,使用 @resource
没有效果,只能以这种添加页面元素的方式引入。
实际显示:
另外一个不同是,魂签可以直接跨域,而油猴需要授权使用 GM_xmlhttpRequest
来跨域。一般的 GET
/PUT
请求都直接使用 axios,只有跨域的地方,才封装使用这个特定API,并确保跟 axios 的参数和返回值基本一致。封装代码如下:
1 | function objectToUrlEncodedParams(obj) { |
代码放在了GitHub。