js混淆爬虫天气网的方法是什么
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,本篇内容介绍了"js混淆爬虫天气网的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!混淆加密
千家信息网最后更新 2025年12月02日js混淆爬虫天气网的方法是什么
本篇内容介绍了"js混淆爬虫天气网的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
混淆加密网站
今天在爬取污染物时遇到下面网站,总的来说碰到了两大方面的爬虫难题。(混淆加密和debug检测)。
待爬取的网站
数据获取
一开始就遇到右键禁用,debug检测。

没办法,ctrl+s,直接把网站保存到了本地。
这样可以f12了,找到主页面,一通找,找到了ajax请求的代码。

传入城市、月份,然后调js中的方法,接着ctrl+shift+f,全局搜索这玩意。
复制到本地一看,好么,js混淆,找了个反混淆js。
复制到本地,一通ctrl+c,终于找到下列代码,一看逻辑,先加密传入的参数,在post请求,获取加密后的结果,在解密结果。
理清思路,终于可以写代码了。
注意一下,每个人的加密参数(或者隔一段时间)不一样,所以大家复制我的不一定后面能跑,自己可以使用这套路获取自己的js。
python代码
# -*- coding: utf-8 -*-import execjsimport jsonimport requestsimport datetimeclass pollutionSpider: """ 爬取https://www.aqistudy.cn/historydata/daydata.php 污染物数据 """ def __init__(self): self.js_path = "../data/aqistudy.js" self.main_url = 'https://www.aqistudy.cn/historydata/api/historyapi.php' self.month_data = {"1": "01", "2": "02", "3": "03", "4": "04", "5": "05", "6": "06", "7": "07", "8": "08", "9": "09", "10": "10", "11": "11", "12": "12"} self.save_path = "../data/weather/" self.headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/71.0.3578.80 Safari/537.36 ' } self.data_headers = "time_point aqi pm2_5 pm10 so2 no2 co o3 rank quality" def encrypt(self, city, month): """ 加密信息 """ js_str = self.get_js() ctx = execjs.compile(js_str) # 加载JS文件 return ctx.call('pLoXOmdsuMMq', "GETDAYDATA", {"city": city, "month": month}) def decrypt(self, data): """ 解密信息 """ ctx = execjs.compile(self.get_js()) # 加载JS文件 return ctx.call('dSMkMq14l49Opc37Yx', data) def get_js(self): """ 获取js """ f = open(self.js_path, 'r', encoding='utf-8') # 打开JS文件 line = f.readline() html_str = '' while line: html_str = html_str + line line = f.readline() return html_str def get_response(self, params): """ 请求数据 """ return requests.post(self.main_url, data={'hzbDyDmL0': params}, headers=self.headers).text def get_single(self, city, month): """ 获取一个城市某个月的数据 """ encrypt_data = self.get_response(self.encrypt(city, month)) data = json.loads(self.decrypt(encrypt_data))['result']['data']['items'] result = ['\t'.join([str(value) for key, value in element.items()]) for element in data] return result def get_all(self, city, start_day): """ 获取一个城市污染数据 """ print("开始获取" + city + "数据------------------------") start_day = datetime.datetime.strptime(start_day, "%Y-%m-%d") end_day = datetime.datetime.now() months = (end_day.year - start_day.year) * 12 + end_day.month - start_day.month month_range = ['%s%s' % (start_day.year + mon // 12, self.month_data[str(mon % 12 + 1)]) for mon in range(start_day.month - 1, start_day.month + months)] f = open(self.save_path + city + ".txt", "w", encoding="utf8") f.write(self.data_headers + "\n") for element in month_range: try: data = self.get_single(city, element) for line in data: f.write(line + "\n") print(element + city + "数据获取------------------------成功") except Exception as e: print(e) print(element + city + "数据获取------------------------失败") f.close()if __name__ == '__main__': pollutionSpider().get_all("上海", "2015-1-1")结果
"js混淆爬虫天气网的方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
数据
加密
网站
代码
方法
爬虫
城市
文件
结果
污染
天气
信息
内容
参数
更多
污染物
知识
一通
检测
大方
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
idrac 多服务器管理
包头软件开发规范
网络技术开发主要是做什么的
魔兽世界永久70服务器
网络安全背景学法律
北仑软件开发教程
虚幻4引擎是用什么软件开发的
数据库后台可视化
服务器驱动怎么样
搭建个人云服务器
阿克苏网络技术调试
qt中数据库访问程序
网络安全风险的防范
女仆日记软件开发
龙珠模组我的世界服务器
数据库一直开着有事吗
网吧网络安全布线
实施工程师数据库常用操作
软件开发产品经理述职报告
重庆七划互联网科技有限公司
我的世界服务器管理端指令
流放者柯南美服有哪些服务器
市北区微信小程序软件开发
抗ddos攻击软件开发
03944网络技术基础
服务器显示509
成都软件开发待遇
电脑服务器声音多少分贝算正常
盟威软件开发平台
全岛互联网科技有限