爬虫随笔(一)

news/2025/2/6 18:58:10/文章来源:https://www.cnblogs.com/Liyukio/p/18701559

爬虫随笔,某牛

  前几天一直在看js逆向,现在分享一下本人近期学习记录
  首先分享一个网站,这个网站可以获得request所需要的header和cookie

https://curlconverter.com/

  爬取网站就不挂了
  简单观察发现,该网站是滑动加载,我们可以在滑动加载时获得我们所需要的接口,发现两个链接,里面负载一模一样

  当然正常来说点不进去,但是怎么获得数据呢?别急,我们先根据url来打xhr断点,然后再搜索关键字,JSON.parse,就可以得到所需js格式,抄下即可
  但是在我们给所需代码上断点时,我们发现,打上断点以后还需要多次运行代码才会产生我们所需要的数据,根据观察我们发现每次下拉刷新时,作用域的值不太一样,而我们把第一次获得的数据进行解密时,发现该数值储存company_id和company_code

  而且我们还发现负载中有一个sig,我们推测该数据是加密以后传回服务器获得我们需要的具体数值,但是加密该如何做到?
  直接在之前打断点处搜索sig,我们会得到加密的js代码,复制进去即可(加密和解密我就不贴出来了,自行寻找吧),然后我们该写我们的爬虫了。嗷还有一个,通过滑动自动加载,我们发现有一个数据叫n,该数据长这样

  而且我们每次加载页数时值都会改变,推测sig是从n加密过来的,差不多就这样,我们上代码

# -*- coding:utf-8 -*-
# @FileName  :code1.py
# @Time      :2025/1/26 20:37
# @Author    :Yukio
from http.client import responsesimport requests
import execjsdef use_encrypt_params():with open("encrypt.js", encoding="utf-8") as f:js_code = f.read()docjs = execjs.compile(js_code)n1 = {"payload": {"industry_ids": 1250,"domestic": True,"corporate_locationIds": [],"tag_names": [],"corporate_rounds": [],"sort": 76006,"order": -1,"start": 0,"limit": 10}}params = docjs.call('main', n1)# print(params)return paramsdef get_data(params):url = ""response = requests.post(url, json=params, cookies=cookies, headers=headers).json()# print(response['d'])return response['d']def decrypt_data(data_params):with open("decrypt.js", encoding="utf-8") as f:js_code = f.read()doctjs = execjs.compile(js_code)data = doctjs.call('main', data_params)# print(data)print('将获取数据为:',len(data['data']))encrypted_data = [i['company_code'] for i in data['data']]return encrypted_datadef encrypted_detail_params(encrypted_data):with open('encrypt.js', encoding='utf-8') as f:js_code = f.read()doctjs = execjs.compile(js_code)n1 = {"payload": {'codes':encrypted_data}}encrypted_detail_data = doctjs.call('main', n1)return encrypted_detail_datadef get_detail_data(encrypted_detail_data):url = ''responses = requests.post(url, json=encrypted_detail_data, cookies=cookies, headers=headers).json()# print(responses['d'])return responses['d']
def final_decrypt(detail_data):with open('decrypt.js', encoding='utf-8') as f:js_code = f.read()docjs = execjs.compile(js_code)final_data = docjs.call('main', detail_data)print(final_data)if __name__ == "__main__":params = use_encrypt_params()#传入我们需要获取的数据量,加密以后得到paramsdata_params = get_data(params)#params传给接口,返回数据得到data_paramsencrypted_data = decrypt_data(data_params)#data_params解密得到encrypted_data,# print(encrypted_data)encrypted_detail_data = encrypted_detail_params(encrypted_data)#encrypted_data放入payload加密后得到encrypted_detail_data# print(encrypted_detail_data)detail_data = get_detail_data(encrypted_detail_data)#然后传入接口得到detail_datafinal_decrypt(detail_data)#detail_data解密得到最终结果

  ok这大概是我全部的学习经历,该过程只使用学习记录,未进行商业用途(叠甲

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

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

相关文章

Flow-CLI 全新升级,轻松对接 Sonar 实现代码扫描和红线卡点

Flow-CLI 使用的典型场景如:自定义开发一个 Sonar 扫描步骤,以在流水中触发 Sonar 扫描,并以扫描结果作为红线卡点,以保证代码质量;对接三方自有审批平台,在发布前进行检查审批,审批通过才允许发布。场景介绍 Flow-CLI 是云效流水线 Flow 推出的一款命令行工具,帮助用户…

皮克定理

小蓝鸟的面积S=B/2+I-1

两步构建 AI 总结助手,实现智能文档摘要

本次解决方案将向您介绍,如何通过函数计算 FC 阿里云百炼平台搭建智能 AI 总结助手,实现高效的文本自动总结和信息提取。在信息极度丰富的当下,如何从海量且复杂的文件资料中筛选出关键内容,成为了不少企业和个人急需解决的问题。本次解决方案将向您介绍,如何通过函数计算…

自定义桌面——获取天气

最近天气时不时会降温,经常用手机查看天气,感觉好不方便,今天决定把天气的功能添加到“自定义桌面”来,为了免费获取天气数据,竟然花了差不多一天的时间来制作完成。(假如一天人工费几百来算,这样真的值得吗?非常值得!为未来完善功能添砖加瓦打好基础!) 添加天气的功…

2.6 第三张评估表搭建

今天完成了作业中第三张能力评估表的搭建 html界面(部分)如下:以下是前端代码(部分): <body> <h1 style="text-align: center">能力评估</h1> <div id="root" style="border: 1px solid black"><form id="…

V-Control 开箱即用的.NET MAUI组件库发布了!

之前写过挺多的MAUI Sample,其中有很多代码可以打包成组件,当组件完善到一定程度,我会把控件封装起来放到控件库中。 今天,在这个仓库建立一年零八个月后,我觉得可以考虑将其作为开源库发布。 有很多网友在观望.NET MAUI,犹豫是否可以拿来作为有生产力的跨平台移动端开发…

国产直升机发展现状及思考

​由于独特的自然环境条件以及当前经济社会发展情况,比较世界上其他发达国家,直升机早已渗入中国城乡建设与经济社会活动的各个环节,例如农林工作、地质勘探、旅游观光、飞机驾驶训练等,直升机对国民经济工程建设起到了重要的作用。 按照我国航空工业技术研究机构的预计,截…

做题随笔:P10451

Solution 题意 原题链接 定义二元关系 \(\text{S}\),其满足反对称性且不满足传递性。 现有互异元素 \(N(N \le 1000)\) 个,可以进行不多于 \(10000\) 次提问,每次提问可以得知两指定元素 \(a,b\) 的 \(a \, \text{S} \, b\) 结果。求序列 \(a_N\) 满足:对任意 \(x_i,x_{i+1…

腾讯云nodejs SDK打包体积过大吐槽事件

💖简介 2025年2月1日有位开发同学batchor在GitHub上提出了issue(你们是把***打包了吗?)对腾讯云Node.js的SDK打包体积过大进行吐槽(言语偏贴吧风格略显激进),SDK打包体积接近100MB,而相比之下其他云服务公司的SDK通常只有十几到二十MB,引起开发者的不满,在GitHub上遭到…

一键生成毛茸萌宠形象,基于函数计算极速部署 ComfyUI 生图系统

本次方案将带领大家使用阿里云产品函数计算 FC,只需简单操作,就可以快速部署 ComfyUI 大模型,创造出你的专属毛茸茸萌宠形象。内置基础大模型+常用插件+部分 Lora,以风格化图像生成为例让用户体验键部署的简单与方便,后续您可根据自己的需要更换需要的模型、Lora、增加插件…

Windows 本地虚拟磁盘

本文介绍如何本地创建虚拟磁盘 虚拟磁盘vhdx是类似物理硬盘一样的磁盘,可以被格式化、内部添加分区,可以指定系统文件格式如NTFS、exFAT 一个vhdx文件对应一个虚拟磁盘,下面我们来操作vhdx文件 1.创建VHDX vhdx磁盘映像文件 windows开始菜单-运行,输入“diskpart”打开磁盘…

$_Windows相关

Windows 终端美化 fluent terminal oh-my-posh 获取文件hash值 Get-FileHash -Algorithm <算法> -Path <文件路径># SHA256 winget hash -f <文件路径># CertUtil -hashfile -? CertUtil -hashfile <文件路径> <算法>快捷键win + tab 切换任务w…