千家信息网

js混淆爬虫天气网的方法是什么

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"js混淆爬虫天气网的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!混淆加密
千家信息网最后更新 2026年11月02日js混淆爬虫天气网的方法是什么

本篇内容介绍了"js混淆爬虫天气网的方法是什么"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

混淆加密网站

 今天在爬取污染物时遇到下面网站,总的来说碰到了两大方面的爬虫难题。(混淆加密和debug检测)。

待爬取的网站

数据获取

  1. 一开始就遇到右键禁用,debug检测。

    没办法,ctrl+s,直接把网站保存到了本地。

  2. 这样可以f12了,找到主页面,一通找,找到了ajax请求的代码。

    传入城市、月份,然后调js中的方法,接着ctrl+shift+f,全局搜索这玩意。

  3. 复制到本地一看,好么,js混淆,找了个反混淆js。

  4. 复制到本地,一通ctrl+c,终于找到下列代码,一看逻辑,先加密传入的参数,在post请求,获取加密后的结果,在解密结果。

  5. 理清思路,终于可以写代码了。

  6. 注意一下,每个人的加密参数(或者隔一段时间)不一样,所以大家复制我的不一定后面能跑,自己可以使用这套路获取自己的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安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技有限公司 广州大一互联网络科技有限公司 互联网 科技公司 深圳互联网科技公司 智慧科技互联网 火传媒上海互联网科技 多迪互联网科技有限公司 深圳前海聚择互联网科技有限公司 以后互联网后是啥科技 互联网金融中的现代科技 国大互联网教育科技有限公司工作 互联网金融科技元年 黑科技 体验场景 互联网大会 每天都有哪些好的互联网科技 九思连强互联网电子科技有限公司 吉林省码上互联网科技电话 中国新注册互联网科技 广西科技产业互联网是什么 马化腾互联网科技教学 互联网领先科技成果宣传视频 互联网科技 易互联网科技有限公司 重庆科技学院互联网 成都仁贤领冠互联网科技有限公司 深圳市罗太互联网科技有限公司 滨湖区互联网智能科技产品有哪些 2021互联网科技公司排名 互联网领先科技宣传片 世界互联网科技成果奖 互联网科技新闻
0