猿人学web端爬虫攻防大赛赛题第19题——乌拉乌拉乌拉

news/2025/1/11 9:56:47/文章来源:https://www.cnblogs.com/sbhglqy/p/18521837

题目网址:https://match.yuanrenxue.cn/match/19

解题步骤

  1. 看触发的数据包。
    image
    image

  2. 有这么好的事情,没有加密的参数,url非常简单,直接写代码访问。

    import requestsurl = "https://match.yuanrenxue.cn/api/match/19?page=1"
    headers = {'Host': 'match.yuanrenxue.cn', 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache','sec-ch-ua-platform': '"Windows"', 'X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36','Accept': 'application/json, text/javascript, */*; q=0.01','sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"', 'sec-ch-ua-mobile': '?0','Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty','Referer': 'https://match.yuanrenxue.cn/match/16', 'Accept-Encoding': 'gzip, deflate, br, zstd','Accept-Language': 'zh-CN,zh;q=0.9','Cookie': 'Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1730505879; HMACCOUNT=5B8060E4DC36D34F; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1730505879; qpfccr=true; no-alert3=true; tk=-5370204167750759641; sessionid=39ahw8ftocq8eghmui7twey3qbw7lek8; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1730505890; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1730506377', }
    resp = requests.get(url, headers=headers)
    print(resp.text)
    

    运行一下,发现啥也获取不到。
    image

  3. 再看数据包,是个http2.0协议,尝试用httpx库访问。
    image

    import httpxurl = "https://match.yuanrenxue.cn/api/match/19?page=1"
    headers = {'Host': 'match.yuanrenxue.cn', 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache','sec-ch-ua-platform': '"Windows"', 'X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36','Accept': 'application/json, text/javascript, */*; q=0.01','sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"', 'sec-ch-ua-mobile': '?0','Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty','Referer': 'https://match.yuanrenxue.cn/match/16', 'Accept-Encoding': 'gzip, deflate, br, zstd','Accept-Language': 'zh-CN,zh;q=0.9','Cookie': 'Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1730505879; HMACCOUNT=5B8060E4DC36D34F; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1730505879; qpfccr=true; no-alert3=true; tk=-5370204167750759641; sessionid=39ahw8ftocq8eghmui7twey3qbw7lek8; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1730505890; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1730506377', }
    client = httpx.Client(http2=True)
    resp = client.get(url, headers=headers)
    print(resp.text)
    

    运行发现还是啥都获取不到。
    image

  4. 真无厘头啊,尝试用fiddler工具抓包。
    image
    也只有一个数据包,重放一下,发现还是可以正常获取数据。
    image
    image

  5. 经过查资料,大概这里是判断了tls指纹。

    tls指纹可参考https://developer.baidu.com/article/details/3348512

    python中可以通过安装curl_cffi库来模拟浏览器的tls指纹(在请求时指定 impersonate 关键字参数即可)
    安装命令:pip install curl_cffi
    image

  6. 编写代码尝试获取第一页的数据。

    from curl_cffi import requestsurl = "https://match.yuanrenxue.cn/api/match/19?page=1"
    headers = {'Host': 'match.yuanrenxue.cn', 'Connection': 'keep-alive', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache','sec-ch-ua-platform': '"Windows"', 'X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36','Accept': 'application/json, text/javascript, */*; q=0.01','sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"', 'sec-ch-ua-mobile': '?0','Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty','Referer': 'https://match.yuanrenxue.cn/match/16', 'Accept-Encoding': 'gzip, deflate, br, zstd','Accept-Language': 'zh-CN,zh;q=0.9','Cookie': 'Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1730505879; HMACCOUNT=5B8060E4DC36D34F; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1730505879; qpfccr=true; no-alert3=true; tk=-5370204167750759641; sessionid=39ahw8ftocq8eghmui7twey3qbw7lek8; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1730505890; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1730506377', }
    resp = requests.get(url, headers=headers, impersonate="chrome110")
    print(resp.text)
    

    运行成功获取到页面数据。
    image

  7. 看来我们的思路没错,完整爬虫代码如下。

    from curl_cffi import requests
    import reres_sum = 0
    pattern = '{"value": (.*?)}'for i in range(1, 6):url = "https://match.yuanrenxue.cn/api/match/19?page={}".format(i)headers = {'Host': 'match.yuanrenxue.cn', 'Connection': 'keep-alive', 'Pragma': 'no-cache','Cache-Control': 'no-cache', 'sec-ch-ua-platform': '"Windows"', 'X-Requested-With': 'XMLHttpRequest','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36','Accept': 'application/json, text/javascript, */*; q=0.01','sec-ch-ua': '"Chromium";v="130", "Google Chrome";v="130", "Not?A_Brand";v="99"','sec-ch-ua-mobile': '?0', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors','Sec-Fetch-Dest': 'empty', 'Referer': 'https://match.yuanrenxue.cn/match/16','Accept-Encoding': 'gzip, deflate, br, zstd', 'Accept-Language': 'zh-CN,zh;q=0.9','Cookie': 'Hm_lvt_9bcbda9cbf86757998a2339a0437208e=1730505879; HMACCOUNT=5B8060E4DC36D34F; Hm_lvt_c99546cf032aaa5a679230de9a95c7db=1730505879; qpfccr=true; no-alert3=true; tk=-5370204167750759641; sessionid=39ahw8ftocq8eghmui7twey3qbw7lek8; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=1730505890; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=1730506377', }resp = requests.get(url, headers=headers, impersonate="chrome110")string = resp.textfindall = re.findall(pattern, string)for item in findall:res_sum += int(item)
    print(res_sum)
    

    运行得到结果。
    image

  8. 提交结果,成功通过。
    image

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

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

相关文章

Visual Studio 2022安装水晶报表(Crystal Reports)

这些天,为程序呈现报表。当想添加Crystal Report时,发现Visual Studio 2022无法添加报表。只有重新下载啦。去这里https://www.tektutorialshub.com/crystal-reports/download-crystal-reports-for-visual-studio-2022/下载上面图片,标志1,即是安装至vs2022。 而标志2,是运…

整理几个国内常用的个人创作者知识付费平台

个人创作者的作品如何实现销售?如何解决收款问题?又该如何提升曝光率?如何让个人创作的作品真正发挥其价值?无论是文件、文档、软件、源码、绘画、动漫、视频、音频、乐谱、小说、图集,创作者们都需要一个便捷的平台来促进与用户之间的交易和联系。因此,知识付费平台应运…

Error infos:DedeCms错误警告:连接数据库失败,可能数据库密码不对或数据库服务器出错!

检查数据库配置使用FTP工具打开htdocs/data/common.inc.php文件。 查找并记录cfg_dbpwd的值(数据库密码)。验证数据库密码登录云虚拟主机控制台,进入“数据库信息”页面。 单击数据库名称右侧的“管理”按钮,输入记录的密码进行验证。重置密码(如果需要)如果密码错误,点…

访问云盘

www.cnblogs.com/delphixx

上传网站文件至云虚拟主机后提示文件大小为0 KB

使用FileZilla工具成功连接云虚拟主机后,网站文件上传到主机站点时,提示传输的文件大小为0 KB。具体错误信息显示已传输0个文件且文件大小为0字节,表示传输的文件大小为0 KB。 问题原因 该问题是由于云虚拟主机空间已占满导致的。当云虚拟主机的空间已满时,无法成功上传新的…

一文读懂数据血缘分析

01什么是数据血缘分析? 数据血缘为数据全生命周期过程中的数据关系,包括数据特征的变化,即数据的来龙去脉。主要内容包括数据的来源、数据的加工方式、映射关系以及数据的流出和消费。数据血缘分析就是针对数据分析中的血缘关系做分析,主要包含数据来源分析、数据血缘影响分…

公司网站用户名密码修改?

登录账户打开公司网站,进入登录页面。 输入当前的用户名和密码,点击登录。进入账户设置登录后,找到并点击账户设置或个人资料选项,通常位于页面顶部的用户头像或用户名旁边。选择修改用户名/密码在账户设置页面中,找到“修改用户名”或“修改密码”的选项。输入新信息修改…

网站打不开怎么办

当遇到网站无法打开的情况时,可以尝试以下几个步骤来排查和解决问题:检查网络连接:确认设备是否已成功连接到互联网。 尝试访问其他网站,看是否只有特定网站无法访问。清除浏览器缓存和Cookies:有时候网站加载不正常是因为浏览器缓存或Cookies的问题。 清除后重新尝试访问…

PbootCMS登录请求发生错误,检查系统会话文件存储目录是否具有写入权限

确定会话文件存储目录PbootCMS默认的会话文件存储目录通常是data/session。检查目录是否存在通过FTP或服务器管理工具,导航到PbootCMS的根目录。 确认data/session目录是否存在。如果不存在,可以手动创建该目录。检查目录权限使用FTP或服务器管理工具检查data/session目录的权…

在箭头函数内,想执行2个行为,但第2个行为却略过

如下示例代码(Javascript):第1个行为提示给用户,当用户点击提示之后,页面重新定向当前页面了,那自然的,第2个行为自然略过了。解决办法,就是使用setTimeout写个超时器,过多少秒之后,自动 执行第2个行为。.then(response => {if (response.data.Status) {alert(&quo…

帝国CMS后台编辑器修改让图片固定宽度高度自适应

找到 fckeditor\editor\dialog\fck_image\fck_image.js 文件。 修改以下代码:GetE(txtWidth).value = 850; GetE(txtHeight).value = 850 * oImageOriginal.height / oImageOriginal.width;850 为默认宽度,可根据需要调整。扫码添加技术【解决问题】专注中小企业网站建设、网…

帝国CMS清空登录操作日志方法

备份数据:在执行任何SQL操作前,请务必备份数据库。 执行SQL语句:清理管理员登录日志:TRUNCATE `[!db.pre!]enewslog`;清理管理员登录失败记录:TRUNCATE `[!db.pre!]enewsloginfail`;清理管理员操作日志:TRUNCATE `[!db.pre!]enewsdolog`;扫码添加技术【解决问题】专注中小…