ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

油猴脚本实现 访问任意网站自动关注哔哩哔哩up主

2022-09-12 09:34:02  阅读:320  来源: 互联网

标签:脚本 xmlhttpRequest up bilibili 访问 api 哔哩 GM 油猴


AJAX

这一大段内容更多是科普和说明我们在脚本里面为什么不能直接使用 XMLHttpRequest去访问我们自己的api

AJAX即Asynchronous Javascript And XML,主要用于不刷新页面与网站后端通信.例如你在b站网页上的点赞/投币/收藏,在评论区翻页,就是使用了ajax技术.

AJAX通常使用XMLHttpRequest(XHR),但是由于此api的设计不太友好,于是又有了Fetch API来解决这些问题,不过也有其它的封装让XHR的使用体验更友好,例如:axios和jQuery的ajax等.此处就不再展开.

跨域

跨域即两个不同域名之间的访问.比如从百度访问到哔哩哔哩

同源策略

同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。

如果两个 URL 的 protocolport (en-US) (如果有指定的话) 和 host 都相同的话,则这两个 URL 是同源。这个方案也被称为“协议/主机/端口元组”,或者直接是 “元组”。(“元组” 是指一组项目构成的整体,双重/三重/四重/五重/等的通用形式)。

脚本的跨域访问

如果我们需要让我们的脚本能够完全的访问其它的api,那么大概只有两种方法,一种是CORS,另外一种是通过油猴扩展去获得更高级的权限,让我们的脚本不受同源策略所限制.

CORS方法如果你调用的api不是自己写的,不能自己去增加CORS策略,那么就几乎无解,好处是对你的api安全.(不过都脚本了,哪里还管安全....)

所以脚本一般使用 GM_xmlhttpRequestAPI,我们需要通过 // @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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有