全套爬虫进阶实战之某壁纸(绕过无限debugger,逆向,滑块,爬虫)

本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
近来想深入学习滑块轨迹,没有找到好的学习资料,偶然看到一篇文章有讲到轨迹,这就开始了今天的这篇文章,出于小白的我看到文章就发现文章又过时了。开始就来了debugger,我的个天,学个爬虫为啥这么难~
还是开始我们这次的学习之旅吧!我就不信了,我还搞不定你~
于是找度娘研究了一天时间也没搞的太懂怎么搞,总是不成功,功夫不负有心人,慢慢的有点点明白什么意思了,接下来开始。直接实战,在实战中弥补自已的不足~

网址:aHR0cHM6Ly9iei56enptaC5jbi9pbmRleA==

1、绕过无限debugger:
ctrl+shfit+i 打开chrome浏览器开发工具

在这里插入图片描述
一来就出现了无限debugger。我的天,网上查了一天时间,尝试了说的各种方法,对js不是很熟悉的我心里面一万只马在奔腾。突然好像悟出来了什么,上菜。不懂的小白们也只有慢慢根据我这个来干,可能领悟的更快。

var _constructor = constructor;  //先接收变量
//重写函数
Function.prototype.constructor = function(s) {
   

                if (s == "debugger"){
   

                        console.log(s);

                        return null;

                }
      
       return _constructor(s);

}

var  xxx=setInterval
setInterval=function (){
   }

打开console
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
久违的正常开发者工具可以运行了。

2、开始分析
清空network,选择推荐,出现一个getDate,向下滑动出现很多带auth_key的请求如图
在这里插入图片描述每一个请求就是一张加载的图片。看来得把auth_key搞定。

开始搜索(ctrl+shift+f)这个关键定auth_key:
在这里插入图片描述打上断点,不能刷新,
在这里插入图片描述遂步分析每个字段是怎么来的,两种方式逆向,一种分析生成的逻辑用python模拟,另一种直接扣js代码,扣代码扣了半天,还是自己功力不行,从此网站看来我的还去学习如下知识点:js的函数调用形式,怎么补环境,像怎么document取得cookie。此次就python模拟:
开始分析:
_0x5e9924 = _0x2e82e1 + ‘-’ + _0x79d357 + ‘-0-’ + _0x14eb0a(_0x1c69e7 + ‘-’ + _0x2e82e1 + ‘-’ + _0x79d357 + ‘-0-TPV4hi7wIeM7DPv35457O8poVyUJRX0o’);

第一个:_0x2e82e1在这里插入图片描述在这里插入图片描述在这里插入图片描述

这个document怎么得到,搞不定,所以扣js也无从下手,先放在一边,我们看看这个函数做了什么,如下图,取消所有断点,在for行打下断点,点运行,出现如下图,每个箭头对应的是做了什么操作,查js相应的功能,
indexof检索cookie的字符串值有没有出现nmumber=,有则返回0,没有该方法返回 -1。substring截取cookie中字段’number=1673712000’的1673712000
在这里插入图片描述明白了此意思,我们取消断点,删除此值
在这里插入图片描述
回到
在这里插入图片描述

进入_0x2b0593()这个后面的(||逻辑或)

在这里插入图片描述在这里插入图片描述上图标注错误,后面发现加1是下一个月。看了半天猜测从gettime来看是一个从1970-1-1-0-0-0到当年-当月-15-0-0-0的一个秒级时间戳
在这里插入图片描述

第二个:_0x79d357
取消所有断点,回到在这里插入图片描述
开启断点,开始在这里插入图片描述
调试,在这里插入图片描述
在这里插入图片描述
猜测是md5加密:
在这里插入图片描述
第三个:

在这里插入图片描述从substring知道是截取字符串
在这里插入图片描述在这里插入图片描述
通过以上,开始写python代码:

def get_number():  # _0x2e82e1
    year = datetime.now().year
    month = datetime.now().date().month
    day = 15
    if month < 12:
        month = month + 1
    else:
        month = 1
        year = year + 1

    date = f"{
     year}-{
     month}-{
     day}"
    b = str(date) + " 00:00:00"
    return int(time.mktime(time.strptime(b, "%Y-%m-%d %H:%M:%S")))


def get_number_md5(number): # _0x79d357
    return hashlib.md5(str(number).encode()).hexdigest()


def get_url_path(url): # _0x1c69e7
    return url[21:len(url)]


def get_auth_key(number, number_md5, url_path): # auth_key

    temp = hashlib.md5(str(f"{
     url_path}-{
     number}-{
     number_md5}-0-TPV4hi7wIeM7DPv35457O8poVyUJRX0o").encode()).hexdigest()
    return f"{
     number}-{
     number_md5}-0-{
     temp}"

如此通过如下就可以得到 url后面的auth_key:

if __name__ == '__main__':
    a_1 = get_number()
    b_1 = get_number_md5(a_1)
    c_1 = get_url_path("https://cdn2.zzzmh.cn/wallpaper/origin/265410565e874f71a09db1d35689f8cd.jpg/thumbs")
    d_1 = get_auth_key(a_1, b_1, c_1)
    print(a_1)
初级教程看:https://download.csdn.net/download/dwf1354046363/20818468 9 网络爬虫进阶之 Selenium 篇 9.1 Selenium 简介 . . . . . . . . 9.1.1 Selenium 是什么 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.1.2 Selenium 特点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 9.1.3 基本安装与使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.1.4 各种浏览器驱动下载地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.1.5 Selenium 初试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 9.2 定位元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2.1 基本的定位方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 9.2.2 使用 By 定位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.2.3 定位一组元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 9.3 控制浏览器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 9.3.1 控制浏览器窗口大小 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 9.3.2 控制浏览器后退、前进 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.3.3 模拟浏览器刷新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.4 WebDriver 中的常用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 9.5 设置元素等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 9.5.1 显式等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 9.5.2 隐式等待 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 9.6 多表单切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.7 多窗口切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 9.8 其他操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值