今天在玩漫画网站的时候,发现一个有趣的现象。浏览漫画时,很想把某张图片保存到本地,但是现在的很多漫画网站是通过javascript动态加载图片信息,而且屏蔽了浏览器右键,导致我无法直接获取图片链接。

好吧,说整活就整活。

随机挑选一个网站讲吧

以 www.mh160mh.com 为例:

1.进入网站,随便选择一部漫画打开,随便选择一个章节列表打开

2.这时你会发现,浏览器右键失效了,无论如何点击都没有反应

3.既然右键不行,我们就用快捷键F12,打开审核元素

4.但是右键还是无法使用。不怕,有办法。

5.审核元素模式下,点击console控制台,然后你又会发现,无法粘贴

6.看它警告信息,手动输入allow pasting

7.我用的是chrome,如果用edge,直接输入允许粘贴,感觉edge更人性化,这点值得表扬,哈哈

8.我们直接粘贴这段代码,你会发现右键可以使用了。


document.oncontextmenu = null;

9.直接找到该图片链接,访问你会发现,尽然无法直接访问,出现Sorry, you have been blocked字样


https://mhpic789-5.kingwar.cn/mh160tuku/f/风起苍岚_12094/第2季279话人傀1_52058329/0001.jpg

10.这种情况通常属于反爬虫机制的范畴。网站使用Cloudflare等服务来防止自动化工具(如爬虫、机器人等)抓取网站内容,从而保护网站数据、减轻服务器负担,或防止恶意访问。

接下来是重头戏,怎么办呢,聪明如你肯定能第一时间想到

对的,我们可以使用第三方服务,制作一个简单的反向代理服务器,设置User-Agent的方式,来突破网站反爬虫访问权限

最著名的当属cloudflare

步骤如下:

1.登录到官网地址:https://dash.cloudflare.com/

2.在左侧栏导航找到Workers和Pages

3.点击创建,带点hellow world。最近改版了,有点不太适应,点击hellow word就是了

4.名称随便,直接点击部署,再点击编辑代码,复制如下代码:


async function handleRequest(request) {
  // 获取 URL 查询参数
  const urlParams = new URL(request.url).searchParams;
  const targetUrl = urlParams.get('url'); // 获取 'url' 参数

  if (!targetUrl) {
    return new Response('Missing URL parameter', { status: 400 });
  }

  // 设置请求头,模拟一个浏览器访问
  const headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36', // 修改为第一段代码中的 User-Agent
    'Referer': 'https://www.mh160mh.com/kanmanhua/11106/27320361.html', // 保留 Referer 设置
    'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7',  // 保留 Accept-Language 设置
    'Accept-Encoding': 'gzip, deflate, br',  // 可选,模拟浏览器的压缩支持
    'Accept': 'image/webp,image/apng,image/*,*/*;q=0.8', // 适当的 Accept 头部
  };

  try {
    // 使用 fetch 请求目标 URL
    const response = await fetch(targetUrl, { headers });
    
    // 返回目标 URL 的响应内容
    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: response.headers,
    });
  } catch (err) {
    return new Response('Error fetching the URL', { status: 500 });
  }
}

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});


5.直接点击部署,完成后,记得绑定自己的域名,至于为什么,你懂得。

6.之后你就可以按照下面的方式访问图片,然后下载到本地了


https://你的域名/?url=https://图片.jpg

结束语录:

很简单的一个反代理,朋友们可以参考这种方式,去自定义内容,很多地方都用的到。哈哈

下面再提供一个项目,大家自己去研究,很简单的,本人不过多介绍。这里仅供朋友们学习探讨使用,请勿用于非法用途。

项目地址:https://github.com/jonssonyan/cf-workers-proxy