油猴脚本实现 访问任意网站自动关注哔哩哔哩up主
作者:互联网
AJAX
这一大段内容更多是科普和说明我们在脚本里面为什么不能直接使用
XMLHttpRequest
去访问我们自己的apiAJAX即Asynchronous Javascript And XML,主要用于不刷新页面与网站后端通信.例如你在b站网页上的点赞/投币/收藏,在评论区翻页,就是使用了ajax技术.
AJAX通常使用XMLHttpRequest(XHR),但是由于此api的设计不太友好,于是又有了Fetch API来解决这些问题,不过也有其它的封装让XHR的使用体验更友好,例如:axios和jQuery的ajax等.此处就不再展开.
跨域
跨域即两个不同域名之间的访问.比如从百度访问到哔哩哔哩
同源策略
同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。
如果两个 URL 的 protocol、port (en-US) (如果有指定的话) 和 host 都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接是 “元组”。(“元组” 是指一组项目构成的整体,双重/三重/四重/五重/等的通用形式)。
脚本的跨域访问
如果我们需要让我们的脚本能够完全的访问其它的api,那么大概只有两种方法,一种是CORS,另外一种是通过油猴扩展去获得更高级的权限,让我们的脚本不受同源策略所限制.
CORS方法如果你调用的api不是自己写的,不能自己去增加CORS策略,那么就几乎无解,好处是对你的api安全.(不过都脚本了,哪里还管安全....)
所以脚本一般使用
GM_xmlhttpRequest
API,我们需要通过// @grant GM_xmlhttpRequest
去申请此权限.这个方法更详细的文档:GM_xmlhttpRequest,看起来像XHR+jQuery的结合体.
油猴实现代码
// ==UserScript==
// @name 访问某个网站关注自己的up主
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://www.iculture.cc/
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant GM_xmlhttpRequest
// @connect api.bilibili.com
// ==/UserScript==
(function() {
'use strict';
//GM_xmlhttpRequestAPI,我们需要通过 // @grant GM_xmlhttpRequest去申请此权限.
GM_xmlhttpRequest({
url:"https://api.bilibili.com/x/relation/modify",
method:"POST",
data:"fid=43771051&act=1&re_src=11&jsonp=jsonp&csrf=ee62d88548d8ad8ca52b0db9a153758b",
headers:{
"Content-type":"application/x-www-form-urlencoded",
"Origin" :"https://search.bilibili.com",
"Referer" : "https://search.bilibili.com/43771051"
},
onl oad:function(xhr){
console.log(xhr.responseText);
}
})
// Your code here...
})();
标签:脚本,xmlhttpRequest,up,bilibili,访问,api,哔哩,GM,油猴 来源: https://www.cnblogs.com/Colincora/p/16685469.html