暴力猴

摘要:
如图所示:II。教程1.让我们首先了解脚本的元数据块。元数据块是描述脚本的用户脚本的一部分。此项目将显示在页面的标题和链接内容中。它是必需的@namespace@namespace@name和@name这两个属性将帮助用户脚本管理器确定脚本是否已安装。如果未提供许可协议,则意味着用户仅被允许个人使用,不能重新分发;该方案将显示在脚本的介绍页上@The contributionAmount建议捐赠金额。请将其与@contributionURL<ignore_js_Op>一起使用。在没有下载工具的情况下,上面的图片是我们常见的下载方法<ignore_ js_Op˃。视频元素中有一个视频链接令人惊讶。

https://www.52pojie.cn/thread-614101-1-1.html

不建议阅读者:

  • 前端大神
  • 想要深入学习(涉及到分析挖掘调用网站中js算法/自己写算法)油猴脚本的读者【备注:楼主也不会,楼主也很绝望啊...】

阅读以下内容所需知识:

  • javascript/jQuery基础知识【李炎恢的JavaScript教程(http://www.ycku.com/javascript/)(http://www.ycku.com/jquery/)】
  • HTML基础知识【李炎恢的HTML5教程(http://www.ycku.com/html5/)】

暴力猴第1张
一、油猴脚本插件的介绍与安装
1、介绍
简单的说就是往WEB页面嵌入本地脚本以改变页面的动作与风格
2、安装
1、chrome商店搜索 Violentmonkey(https://github.com/violentmonkey/violentmonkey/releases/download/v2.6.3/violentmonkey-2.6.3.crx并安装
2、本地安装,以QQ浏览器为例子:

  • 首先下载Violentmonkey(https://github.com/violentmonkey/violentmonkey/releases/download/v2.6.3/violentmonkey-2.6.3.crx) 的crx文件
  • 然后进行如下操作(如图所示):打开浏览器-->应用中心-->管理我的应用-->将下好的crx拖到浏览器-->确认安装

<ignore_js_op>暴力猴第2张
备注:
百度云盘:链接:http://pan.baidu.com/s/1pLLkU2R密码:rwkg
问:可能会有人问为什么要使用 Violentmonkey(https://github.com/violentmonkey/violentmonkey/releases/download/v2.6.3/violentmonkey-2.6.3.crx) 而不是使用 Tampermonkey(https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?
答:因为 Violentmonkey(https://github.com/violentmonkey/violentmonkey/releases/download/v2.6.3/violentmonkey-2.6.3.crx) 有搜索该网站脚本以及同步功能,更人性化、最主要是界面长得好看啊。如图所示:
<ignore_js_op>暴力猴第3张
暴力猴第1张
二、教程
1、先来了解下脚本的元数据块
元数据块是描述脚本的一个用户脚本部分。它通常包含脚本名称,命名空间,描述和包含和排除规则。元数据块出现在JavaScript行注释中,可能会出现在脚本内的任何位置, 但通常靠近文件的顶部。

示例备注
@name@name脚本名称脚本的名称。该项将显示在页面的标题以及链接内容,必填项
@description@description脚本功能描述脚本功能的描述,显示在脚本标题下面,必填项
@namespace@namespace及 @name 这两个属性将帮助用户脚本管理器判断是否已安装该脚本。
@version@version0.0.1脚本的版本标记将使用 Mozilla 版本格式 并显示于脚本的简介页面,必填项
@include
@exclude
@match
@match*://www.52pojie.cn/*描述脚本将执行的页面。该列表会被分析并展示到脚本的简介页面,以及用于脚本分类。
@require@require http://cdn.bootcss.com/jquery.min.js引用外部脚本到您的脚本
@updateURL
@installURL,@downloadURL
告知用户脚本管理器应该在哪个地址获取脚本更新。
@license脚本所使用的许可协议名称或地址,该协议需包含用户是否允许二次分发或修改脚本的权利。不提供许可协议则表示用户仅允许个人使用且不得二次分发;该协议将在脚本的简介页面显示。
@supportURL用户可获得该脚本技术支持的链接地址 (如:错误反馈系统、论坛、电子邮件),该链接将显示在脚本的反馈页面。
@contributionURL用于捐赠脚本作者的链接,该链接将显示在脚本的反馈页面。
@contributionAmount建议捐赠金额,请配合 @contributionURL 使用。
@compatible标记此脚本与某个浏览器兼容,兼容性信息将显示在脚本的简介页面上。
@incompatible标记此脚本与某个浏览器不兼容,兼容性信息将显示在脚本的简介页面上。

元数据块必须遵循以下格式:

[JavaScript]纯文本查看复制代码
1
2
3
// ==UserScript==
// @key value
// ==/UserScript==

备注:

  • Greasy Fork 要读取的脚本元键值【https://greasyfork.org/zh-CN/help/meta-keys
  • Metadata Block - GreaseSpot Wiki (api文档)【https://wiki.greasespot.net/Metadata_Block

2、实践是检验真理的唯一标准
以 微博视频(http://weibo.com/tv/movie) 的下载辅助为例子。
暴力猴第1张
<ignore_js_op>暴力猴第6张
在没有下载工具的情况下,以上的图片就是我们常用的下载方式。既然发现了包含mp4字样的链接地址,不妨继续到网页标签元素中在探索一番,说不定还会有其它的收获。
<ignore_js_op>暴力猴第7张
真让人惊喜,video元素中竟然有视频直链。既然这样,我们只需要获取到video的src属性,再往页面上添加个下载按钮就能撇弃资源嗅探的繁琐下载方式了!!!
思路已经想好了,那么就开始动手写代码吧。
第一步,先把最基本的框架搭好。

[JavaScript]纯文本查看复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
// ==UserScript==
// @icon http://weibo.com/favicon.ico
// @name 微博视频下载助手
// @namespace [url=mailto:1649991905@qq.com]1649991905@qq.com[/url]
// @author 猎隼丶止戈
// @description 下载微博视频
// @match *://weibo.com/tv/v/*
// @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @version 0.0.1
// @grant GM_addStyle
// ==/UserScript==
(function() {
'use strict';
})();

第二步,编写下载弹出框与获取文件名的工具对象

[JavaScript]纯文本查看复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
varvideoTool = {
//获取文件名
getFileName: function(url, rule_start, rule_end) {
varstart = url.lastIndexOf(rule_start) + 1;
varend = url.lastIndexOf(rule_end);
returnurl.substring(start, end);
},
//弹出下载框
download: function(videoUrl, name) {
varcontent = "file content!";
vardata = newBlob([content], {
type: "text/plain;charset=UTF-8"
});
vardownloadUrl = window.URL.createObjectURL(data);
varanchor = document.createElement("a");
anchor.href = videoUrl;
anchor.download = name;
anchor.click();
window.URL.revokeObjectURL(data);
}
};

第三步,生成一个下载按钮,并嵌入页面

[JavaScript]纯文本查看复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
//与元数据块中的@grant值相对应,功能是生成一个style样式
GM_addStyle('#down_video_btn{color:#fa7d3c;}');
//视频下载按钮的html代码
vardown_btn_html = '<li>';
down_btn_html += '<a href="javascript:void(0);" title="视频下载">';
down_btn_html += '<span class="pos">';
down_btn_html += '<span node-type="comment_btn_text">';
down_btn_html += '<span>';
down_btn_html += '<em class="W_ficon ficon_video_v2 S_ficon">i</em>';
down_btn_html += '<em>视频下载</em>';
down_btn_html += '</span>';
down_btn_html += '</span>';
down_btn_html += '</span>';
down_btn_html += ' <span class="arrow"><span class="W_arrow_bor W_arrow_bor_t"><i class="S_line1"></i><em class="S_bg1_br"></em></span></span>';
down_btn_html += ' </li>';
//将以上拼接的html代码插入到网页里的ul标签中
varul_tag = $("div.WB_handle>ul");
if(ul_tag) {
ul_tag.removeClass("WB_row_r3").addClass("WB_row_r4").append(down_btn_html);
}

图片说明:
<ignore_js_op>暴力猴第8张
效果图:
<ignore_js_op>暴力猴第9张
最后一步,获取播放器(video)对象中的视频地址并编写下载按钮的单击事件

[JavaScript]纯文本查看复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
$(function() {
//获取播放器(video)对象
varvideo = $("video");
varvideo_url = null;
if(video) {
video_url = video.attr("src"); //获取视频链接地址
}
//执行下载按钮的单击事件并调用下载函数
$("#down_video_btn").click(function() {
if(video_url) {
videoTool.download(video_url, videoTool.getFileName(video_url, "/", "?"));
}
});
});

暴力猴第1张
完整代码及效果演示:

[JavaScript]纯文本查看复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// ==UserScript==
// @icon http://weibo.com/favicon.ico
// @name 微博视频下载助手
// @namespace [url=mailto:1649991905@qq.com]1649991905@qq.com[/url]
// @author 猎隼丶止戈
// @description 下载微博视频
// @match *://weibo.com/tv/v/*
// @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
// @version 0.0.1
// @grant GM_addStyle
// ==/UserScript==
(function() {
'use strict';
//与元数据块中的@grant值相对应,功能是生成一个style样式
GM_addStyle('#down_video_btn{color:#fa7d3c;}');
//视频下载按钮的html代码
vardown_btn_html = '<li>';
down_btn_html += '<a href="javascript:void(0);" title="视频下载">';
down_btn_html += '<span class="pos">';
down_btn_html += '<span node-type="comment_btn_text">';
down_btn_html += '<span>';
down_btn_html += '<em class="W_ficon ficon_video_v2 S_ficon">i</em>';
down_btn_html += '<em>视频下载</em>';
down_btn_html += '</span>';
down_btn_html += '</span>';
down_btn_html += '</span>';
down_btn_html += ' <span class="arrow"><span class="W_arrow_bor W_arrow_bor_t"><i class="S_line1"></i><em class="S_bg1_br"></em></span></span>';
down_btn_html += ' </li>';
//将以上拼接的html代码插入到网页里的ul标签中
varul_tag = $("div.WB_handle>ul");
if(ul_tag) {
ul_tag.removeClass("WB_row_r3").addClass("WB_row_r4").append(down_btn_html);
}
varvideoTool = {
//获取文件名
getFileName: function(url, rule_start, rule_end) {
varstart = url.lastIndexOf(rule_start) + 1;
varend = url.lastIndexOf(rule_end);
returnurl.substring(start, end);
},
//弹出下载框
download: function(videoUrl, name) {
varcontent = "file content!";
vardata = newBlob([content], {
type: "text/plain;charset=UTF-8"
});
vardownloadUrl = window.URL.createObjectURL(data);
varanchor = document.createElement("a");
anchor.href = videoUrl;
anchor.download = name;
anchor.click();
window.URL.revokeObjectURL(data);
}
};
$(function() {
//获取播放器(video)对象
varvideo = $("video");
varvideo_url = null;
if(video) {
video_url = video.attr("src"); //获取视频链接地址
}
//执行下载按钮的单击事件并调用下载函数
$("#down_video_btn").click(function() {
if(video_url) {
videoTool.download(video_url, videoTool.getFileName(video_url, "/", "?"));
}
});
});
})();

<ignore_js_op>暴力猴第11张
暴力猴第1张
脚本发布,首先得有个 greasyfork 帐号。点击 个人中心(即自己的昵称)-->提交脚本-->按要求填写脚本信息-->提交
<ignore_js_op>暴力猴第13张
暴力猴第14张
第一次写分享帖,写的不好,请勿喷暴力猴第15张
感谢将帖子阅读完的老铁!!

免责声明:文章转载自《暴力猴》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何使用U盘安装macOS high Sierra?UEFI启动 安装win8 win10 及windows server 2012 最简单的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue使用videojs控制后台m3u8数据请求

关于Video.js的使用方法就不再说了,有兴趣的请迁跃:https://videojs.com/ VideoJS中并没有stop之类控制后台数据请求的参数,只有暂停 video.pause()方法 ,但是对于后台的请求是不会暂停的,如果我页面有多个Vedio实例需要存在,这样就太影响页面效率了 我使用的是Vue 组件化的VedioJS控件 1、动态控...

五十六 SMTP发送邮件

SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。 首先,我们来构造一个最简单的纯文本邮件: from email.mime.text import MIMEText msg =...

HTML参考 :TBODY元素 详解

TBODY 元素内包含的有效标签有:TD TH TR TBODY 元素会为全部表格自动定义,就算表格没有显式定义 TBODY 元素。 table 对象及其相关的元素有独立的表格对象模型,这与常规对象模型所采用的方法有很大不同。 此元素在 Microsoft? Internet Explorer 3.0 的 HTML 中可用,在 Internet Expl...

html表格宽度设置失效

问题描述: 我在写一个网页table时,table宽度超过了我预想的宽度,我想把它设置小一点,但总是没效果。改到怀疑人生!代码如下: 经过多次调试后发现一个问题,table可以改变大小,但是会有一个最小值,低于最小值时,数值修改会无效,table大小始终是最小值。后灵机一动,把问题锁定在input标签上。思考时认为,表格大小有最小值是因为里面有东西把它撑...

前端导出Excel兼容写法

今天整理出在Web前端导出Excel的写法,写了一个工具类,对各个浏览器进行了兼容。 首先,导出的数据来源可能有两种: 1. 页面的HTML内容(一般是table) 2. 纯数据 PS:不同的数据源,导出的写法也是不相同的。 技术方案 IE 无论数据来源是哪里,都是用ActiveXObject对象及相关的命令,IE10、11有点不同。  非IE 纯数据的...

CSS对各个浏览器兼容技巧HACK技巧

*   ie6和ie7都可以识别_   只有ie6可以识别\0  只有ie8可以识别:root 只有ie9可以识别  关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助. 一、CSS HACK HACK概念: 不同的浏览器,比如Internet Explorer 6,...