【反爬大核弹】大厂策划们,我来教教你们如何让网站反爬虫

反爬虫反调试小结:

敢爬我的网站,我就炸了你的电脑!闪花你的双眼。

大家好,这一集我们来学一些非常实用的反爬小妙招。

首先我们来回顾一些非常低级的反爬,有的禁止右键,有的禁止F12,但是我们还可以点击浏览器右上角三个点,然后更多工具然后点击开发者模式啊。我都不信哪个大厂除了谷歌能改这个按钮。

但是啊,网页还可以检测你有没有打开开发者模式啊,如何检测呢?之前是可以判断网页内部宽高和外部宽高差得到,但是这样检测的话我们可以将控制台分离到网页之外就可以检测到。
其实要想检测是否打开了开发者模式挺复杂的,有的帖子一下都划不到头。比如说这个帖子:https://stackoverflow.com/questions/7798748/find-out-whether-chrome-console-is-open/30638226#30638226

但是github有对应的小工具,链接如下:https://github.com/sindresorhus/devtools-detect

我有一个想法就是,悄摸摸的在打开开发者模式进行调试的时候在本地存储下一些暗号,然后页面根据暗号进行一些阻碍操作。

检测到你开启开发者模式之后,然后无限debugger什么的,我觉得这些都没啥意思,新手搜搜教程照着做一下就过去了,就开始找你的加密代码了。

首先要说明的是,我要推荐的反爬方式啊,肯定是能被破解的。只不过我觉得这种方式可以阻挠一下小白。当然只是我觉得,只是我从我的一个爬虫小白的视角来看。

我的建议是直接重定向网页,这个方式啊我看今年年初的时候大模型爆火,然后咱们本地的大厂用的也是这种方法,具体那个大厂我就不说了,也是偶然发现,欸,一右键打开开发者模式就重定向到别的网站了。

就是检测开开发者模式有没有打开,一检测到打开了就重定向到别的网站,这样的话他根本看不到控制台好吧,又谈何去找你的加密代码呢。

其实我们的禁止打开开发者模式的集中手段,还有无限debugger或者是重定向都是比较温和的反爬手段,相当于他只是阻碍了你一下,但是呢,并没有惩罚你什么,但是呢,他其实也可以惩罚你一下,比如说呢,欸,你一打开控制台,我们就给你的大惊喜,比如说,我们可以给你打开一百个资源网站,让你精尽人亡,让你的电脑呢,内存耗尽而卡顿,肯定也会吓你一跳。一下打开了一百个页面,肯定很惊喜吧。

还有别的打开开发者模式就触发的搞人方法吗?当然有,比如说直接关闭浏览器。纳尼,这磨损,还有吗,比如说开启一个动画,频繁改变网页颜色,一闪一闪,就像一个闪光弹,或者蹦迪的颜色。我们可以想象下那个场景,半夜加班你右键想要打开开发者模式,然后你的同事就看到你的屏幕一闪一闪,红色蓝色。

破解办法呢其实就是使用我们的抓包工具,抓取到页面后,查看是哪里的代码实现的重定向,将其注释或者删掉即可。

为什么在我的视角中这种更难点呢?因为一般爬虫小白网页右键过debugger已经有点汗流浃背了,但是如果要使用抓包工具的话,工具还都是英文的,有的同学下载配置完了要用熟练这些工具也很难。

当然啊,我只是刚开始学习爬虫,上面这些知识之前凭兴趣了解的一点东西,可能不是很完善或者正确,所以呢,大家如果觉得我说得好或者不好都可以在评论区留下自己的看法,我们一起交流进步。

本文视频演示:https://www.bilibili.com/video/BV1YG411k7Ab/

代码:

禁用右键和F12

<!DOCTYPE html>
<body>禁用右键和F12<script>// F12window.onkeydown = window.onkeyup = window.onkeypress = function (event) {// 判断是否按下F12,F12键码为123  if (event.keyCode = 123) {alert('你按下了F12,\n不要嘛~鸽鸽~')event.preventDefault(); // 阻止默认事件行为  window.event.returnValue = false;}}// 右键document.oncontextmenu = function () {alert('你按下了鼠标右键,\n不要嘛~鸽鸽~')event.returnValue = false;}</script>
</body>

无限debugger

<!DOCTYPE html>
<body>
无限debugger
<script>function check() {debugger;setTimeout(check, 1);}check();
</script>
</body>

检测视图宽高与实际宽高判断是否打开控制台

<!DOCTYPE html><body>检测视图宽高与实际宽高判断是否打开控制台
<script>
const devtools = {isOpen: false,orientation: undefined,
};// inner和outer之间大小的阈值
const threshold = 170;
// 定义监听开发者工具事件
const emitEvent = (isOpen, orientation) => {globalThis.dispatchEvent(new globalThis.CustomEvent('devtoolschange', {detail: {isOpen,orientation,},}));
};const main = ({ emitEvents = true } = {}) => {const widthThreshold = globalThis.outerWidth - globalThis.innerWidth > threshold;const heightThreshold = globalThis.outerHeight - globalThis.innerHeight > threshold;const orientation = widthThreshold ? 'vertical' : 'horizontal';if (!(heightThreshold && widthThreshold)&& ((globalThis.Firebug && globalThis.Firebug.chrome && globalThis.Firebug.chrome.isInitialized) || widthThreshold || heightThreshold)) {// 有超过阈值 是打开的if ((!devtools.isOpen || devtools.orientation !== orientation) && emitEvents) {emitEvent(true, orientation);}devtools.isOpen = true;devtools.orientation = orientation;} else {// 开发者工具未打开if (devtools.isOpen && emitEvents) {emitEvent(false, undefined);}devtools.isOpen = false;devtools.orientation = undefined;}
};main({ emitEvents: false });
setInterval(main, 500);
window.addEventListener('devtoolschange', event => {console.log(event.detail.isOpen)
});
</script>
</body>

右键网页重定向

<!DOCTYPE html>
<body>右键网页重定向<script>document.oncontextmenu = function () {	window.location.href="https://www.baidu.com"event.returnValue = false;}</script>
</body>

右键打开新窗口

<!DOCTYPE html>
<body>
右键打开新窗口
<script>
document.oncontextmenu = function () {for(var i=0;i<10;i++){window.open('http://www.baidu.com', '_blank')}event.returnValue = false;
}
</script>
</body>

右键关闭当前网页

<!DOCTYPE html>
<body>
右键关闭当前网页
<script>
document.oncontextmenu = function () {window.opener=null;window.open('','_self');window.close();event.returnValue = false;
}
</script>
</body>

右键闪光弹

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>右键闪光弹</title><style>*{margin: 0;padding: 0;}#myDiv{width: 100vw;height: 100vh;}</style>
</head>
<body><div id="myDiv">派森斗罗,右键闪光弹</div>
<script>var flag = 0;var int = '';function start() {var text = document.getElementById("myDiv");const colors = ['#FF0000', '#FFA500', '#FFFF00', '#008000', '#00FFFF', '#0000FF', '#800080'];const randomIndex = Math.floor(Math.random() * colors.length);const randomColor = colors[randomIndex];text.style.background = randomColorint = setTimeout("start()", 50);}document.oncontextmenu = function () {start();event.returnValue = false;}
</script>
</body>
</html>

视频介绍:https://www.bilibili.com/video/BV1YG411k7Ab/


总结

🐋 🐬 🐶 🐳 🐰 🦀☝️ ⭐ 👉 👀

如果你对这篇文章感兴趣,欢迎在评论区留言,分享你的想法和建议。如果你喜欢我的博客,请记得点赞、收藏和关注我,我会持续更新更多有用的网页技巧和教程。谢谢大家!


更多宝藏

🍇🍉🍊🍏🍋🍅🥝🥥🫒🫕🥗
视频推送看这里🤤:
https://space.bilibili.com/1909782963
项目仓库看这里🤗:
https://github.com/w-x-x-w
https://gitee.com/w-_-x
公众号名称😮:派森斗罗
博客文章看这里🤭:
https://blog.csdn.net/weixin_62650212

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/577039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用SpringCache缓存数据

今天学到一个新知识&#xff1a;SpringCache&#xff0c;刚开始项目是使用Redis来进行缓存数据&#xff0c;但是当进行数据库操作的时候&#xff0c;通常也需要对Redis缓存的数据进行操作&#xff0c;这就需要写很多的代码量。 然后就了解到了SpringCache&#xff0c;可以通过…

5g消息-5G时代短信升级-富媒体智能交互-互联网新入口

在5G时代&#xff0c;运营商和各大手机厂商都在积极推进5G消息的商用&#xff0c;基于短信入口的富媒体消息应用在近两年得到快速发展&#xff0c;并在企业端形成了广泛应用。 作为5G时代的数字原生应用&#xff0c;5G消息支持用户通过文字、图片、音频、视频、位置等富媒体方式…

【算法题】链表重排(js)

力扣链接&#xff1a;https://leetcode.cn/problems/LGjMqU/description/ /*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode…

异常的分析

Throwable: 总父类,表示不正常的情况 2. Error: 错误 无法解决也无法提前避免的问题通常由硬件设备或内存等问题导致 Exception:异常 可以解决或提前避免的问题通常由代码导致分类: RuntimeException:运行时异常&#xff0c;也称为未检查异常、未检异常等 编译不报错,运行报错…

C++11(上):新特性讲解

C11新特性讲解 前言1.列表初始化1.1{ }初始化1.2std::initializer_list 2.类型推导2.1 auto2.2 typeid2.3 decltype 3.范围for4.STL的变化4.1新容器4.2容器的新方法 5.右值引用和移动语义5.1 左值引用和右值引用5.2 左值引用与右值引用比较5.3 右值引用的使用场景5.4 右值、左值…

浙江大唐乌沙山电厂选择ZStack Cloud打造新一代云基础设施

浙江大唐乌沙山电厂选择云轴科技ZStack Cloud云平台为其提供高性能、高可用的云主机、云存储和云网络&#xff0c;构建了简单、稳定、安全、高效的云基础设施&#xff1b;通过ZStackCloud为其提供可视化服务编排、多租户自服务等模块&#xff0c;帮助电厂提高IT资源利用率&…

解决FTP传输慢的问题(ftp传输慢为什么)

在企业运营中&#xff0c;使用FTP进行文件或数据传输是相当普遍的做法。尽管FTP是一种传统的文件传输工具&#xff0c;但在实际应用中&#xff0c;我们可能会面临传输速度缓慢的问题&#xff0c;这不仅影响工作效率&#xff0c;还浪费时间。为了解决这一问题&#xff0c;我们可…

泛微OA xmlrpcServlet接口任意文件读取漏洞(CNVD-2022-43245)

CNVD-2022-43245 泛微e-cology XmlRpcServlet接口处存在任意文件读取漏洞&#xff0c;攻击者可利用漏洞获取敏感信息。 1.漏洞级别 中危 2.影响范围 e-office < 9.5 202201133.漏洞搜索 fofa 搜索 app"泛微-OA&#xff08;e-cology&#xff09;"4.漏洞复现 …

vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)

下载安装HBuilder X编辑器 https://www.dcloud.io/hbuilderx.html 新建 5APP 项目 打开 HBuilder X&#xff0c;新建项目 此处项目名以 ‘test’ 为例 含跨域代理的vue项目改造 若 vue 项目中含跨域代理&#xff0c;如 vue.config.js module.exports {publicPath: "./&…

Python 查杀进程的方法封装

一、前置说明 在自动化测试中,经常需要启动进程和关闭进程,本文介绍几种常用的查杀进程的方式:kill_process_by_pid、kill_process_by_port、kill_process_by_name、kill_process_by_window_name。 二、代码实现 utils/os_util.py import os import platform import log…

【C++】开源:FTXUI终端界面库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍FTXUI终端界面库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…

【文本处理】正则表达式

一、简介 正则表达式&#xff0c;又称规则表达式,&#xff08;Regular Expression&#xff0c;在代码中常简写为regex、regexp或RE&#xff09;&#xff0c;是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&…

单例模式学习

单例模式是应用最广的设计模式之一&#xff0c;也是程序员最熟悉的一个设计模式&#xff0c;使用单例模式的类必须保证只能有创建一个对象。 一、为什么要使用单例&#xff1f; 在开发过程中&#xff0c;很多时候一个类我们希望它只创建一个对象&#xff0c;比如&#xff1a;线…

springboot(ssm智慧校园之家长子系统 智慧校园系统Java系统

springboot(ssm0智慧校园之家长子系统 智慧校园系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09…

苹果发布了一个Ferret(雪貂)多模态大模型,在一个无人问津的角落被一位博主捞起来

苹果12月14日释放了一个名为Ferret的多模态大语言模型&#xff0c;有的翻译是雪貂&#xff0c;有的是法学硕士&#xff0c;要我说&#xff0c;还是叫雪貂吧&#xff0c;接地气亲民&#xff0c;将来犯蠢的时候出来发张雪貂的可爱表情包作公关就完事了&#xff0c;你个法学硕士到…

C语言—每日选择题—Day63

指针相关博客 打响指针的第一枪&#xff1a;指针家族-CSDN博客 深入理解&#xff1a;指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 设C语言中&#xff0c;一个int型数据在内存中占2个字节&#xff0c;则unsigned int型数据的取值范围为 A&#xff1a;0~255 B&#xff1a;0…

mysql8.x版本_select语句源码跟踪

总结 源码基于8.0.34版本分析&#xff0c;函数执行流程含义大致如下&#xff1a; do_command 方法从连接中读取命令并执行&#xff0c;调用 dispatch_command 对命令进行分发。dispatch_command 调用 mysql_parse 对命令进行解析&#xff0c;如果遇到一条语句用 ; 分隔多条命…

CGAL中三角形曲面网格近似

1、介绍 此软件包实现了变分形状近似&#xff08;VSA&#xff09;方法&#xff0c;通过更简单的表面三角形网格来近似输入表面网格。该算法的输入必须是&#xff1a; 三角形分割&#xff1b;组合2流形 输出是一个三角形汤&#xff0c;可以构建成多边形曲面网格。 给定一个输入曲…

linux操作系统——进程(二) 进程状态

进程状态 你真正的理解了进程的状态嘛?特别是操作系统教材中学过的进程状态&#xff0c;你真的理解了吗&#xff1f; 教材上关于进程状态的说明 下面我们以下图为例: 这是教材上对操作系统的说明&#xff0c;但是它并没有详细的说明&#xff0c;这些状态具体是什么&#xf…

大语言模型说明书

在浩瀚的信息宇宙中&#xff0c;大语言模型如同一颗璀璨的星星正在熠熠生辉。21世纪以来&#xff0c;人工智能可谓是飞速发展&#xff0c;从简单的神经网络到大语言模型、生成式AI&#xff0c;这并非仅仅是一种技术的进步&#xff0c;更是人类智慧的飞跃。大语言模型不仅仅是语…