获取图片链接的油猴脚本

UserScript-获取图片链接脚本

前段时间研究了Python、Shell脚本爬虫,发现都得模拟浏览器访问然后爬取源码,后来脑洞大开,直接写个油猴脚本,直接获取当前源码并且提取图片链接,可以无视任何质询验证就获取图片链接。

Last time: 2024/10/5

注:因为用手机基于UserScript开发,并且UserScript是专门适应手机浏览器使用油猴脚本开发的,原理上讲,电脑应该也能用,不过我没有测试,嘻嘻嘻。

源码:

废话不多说,直接上代码:

请尊重我的劳动成果,禁止用于商业售卖,转发请标明来源。

1
2
3
4
5
6
7
8
9
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// ==UserScript==
// @name 提取页面图片链接到文件(可拖动)
// @namespace http://tampermonkey.net/
// @version 0.4
// @description 在点击悬浮按钮后提取页面中所有图片的链接到文本文件并提供下载链接,支持拖动操作
// @author CSDevil
// @match *://*/*
// ==/UserScript==

(function() {
'use strict';

let startX, startY;
const floatingButton = document.createElement('div');
floatingButton.style.position = 'fixed';
floatingButton.style.top = '50%';
floatingButton.style.left = '10px';
floatingButton.style.transform = 'translateY(-50%)';
floatingButton.style.width = '50px';
floatingButton.style.height = '50px';
floatingButton.style.background = '#007bff';
floatingButton.style.color = '#fff';
floatingButton.style.borderRadius = '50%';
floatingButton.style.textAlign = 'center';
floatingButton.style.lineHeight = '50px';
floatingButton.style.cursor = 'pointer';
floatingButton.style.zIndex = '99999';
floatingButton.textContent = '提取';

let isProcessing = false;

// 添加触摸事件处理
floatingButton.addEventListener('touchstart', function(e) {
const touch = e.touches[0];
startX = touch.clientX - floatingButton.getBoundingClientRect().left;
startY = touch.clientY - floatingButton.getBoundingClientRect().top;
});

floatingButton.addEventListener('touchmove', function(e) {
e.preventDefault();
const touch = e.touches[0];
floatingButton.style.left = (touch.clientX - startX) + 'px';
floatingButton.style.top = (touch.clientY - startY) + 'px';
});

// 添加点击事件监听器
floatingButton.addEventListener('click', function() {
if (isProcessing) return;
isProcessing = true;

// 提取页面中所有图片链接
const imageLinks = Array.from(document.querySelectorAll('img'))
.map(image => image.src)
.filter(src => src); // 过滤有效的src

// 将链接保存到文本文件并提供下载链接
const linkText = imageLinks.join('\n');
const blob = new Blob([linkText], { type: 'text/plain' });
const url = URL.createObjectURL(blob);

// 获取当前网页的URL并进行处理
const pageUrl = window.location.href;
const sanitizedPageUrl = pageUrl.replace(/[^a-zA-Z0-9]/g, '_').slice(0, 50);
const fileName = `${sanitizedPageUrl}_image_links.txt`;

// 创建下载链接并模拟点击
const downloadLink = document.createElement('a');
downloadLink.href = url;
downloadLink.download = fileName; // 使用处理后的URL作为文件名
downloadLink.style.display = 'none'; // 隐藏链接
document.body.appendChild(downloadLink);
downloadLink.click();

// 提供下载反馈
const notification = document.createElement('div');
notification.textContent = '正在下载...';
document.body.appendChild(notification);

// 清理工作
setTimeout(() => {
document.body.removeChild(downloadLink); // 移除链接
URL.revokeObjectURL(url); // 释放URL对象
document.body.removeChild(notification); // 移除通知
isProcessing = false; // 重置状态
}, 100); // 延时释放,确保下载完成
});

// 将悬浮按钮添加到页面中
document.body.appendChild(floatingButton);
})();


之前更新了很多版本,这里就不拿出来丢人了。

 

后记:

代码写好了不发得发个文章让大家都能用?不是吗?

代码本无害,请合法使用,不要非法爬取网站图片。

优点有一些:方便,爬取后直接打包txt下载、可以无视爬虫验证

    

完结撒花

 

注:以上内容仅供学习交流使用,禁止用于非法目的。请自觉遵守法律规定。本网站所有内容仅限于学习交流和娱乐,任何非法用途均由使用者个人承担责任。

鸣心/Write

获取图片链接的油猴脚本
https://b.wihi.top/posts/d288e07e.html
作者
鸣心
发布于
2024年7月22日
许可协议
本站全部文章除在文章开头特别声明外,均采用:BY-NC许可协议。转载请标明出处!