当前位置: 首页 > 工具软件 > Python Fiddle > 使用案例 >

python爬虫之路【2】fiddle手机抓包

蔺敏达
2023-12-01

这次用的是fiddle抓手机的包,简单总结以下python爬手机数据

重点是思路和难点的处理

环境:win10,fidlle,python3.7,手机模拟器

在电脑上装了个手机模拟器,然后配置好证书之类的就开始抓包(百度配置fiddle)

其中遇见的主要难点:

分析请求


在返回的json数据中,分析请求的json数据,查找里面有没有想要的数据

然后把header复制下来requests请求得到json数据

编码问题


得到的json数据用requests.text发现是ascii编码,里面的中文全被转换了

用以下方法可以解决

name = r"\u6697\u88d4\u5251\u9b54"
print(name.encode('ascii').decode('unicode_escape'))

处理数据


得到json数据后把数据转换为字典来处理

方法1:eval(dic)

方法2:json.load(dic)

用方法2处理时,编码右边为ascii了,所以我用的是方法1

最后就是简单的数据提取了,然后存入文件即可

代码

import requests
import json


def main():
    # name = r"\u6697\u88d4\u5251\u9b54"
    # print(name.encode('ascii').decode('unicode_escape'))
    headers = {
        'Referer': 'http://api.maxjia.com/',
        'User-Agent': 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 ApiMaxJia/1.0',
        'Cookie': 'phone_num=0101010101010101010101',
        'Host': 'api.maxjia.com',
        'Connection': 'Keep-Alive',
        'Accept-Encoding': 'gzip'
    }
    url = 'http://api.maxjia.com/api/item/stat/v2/?&game_type=dota2&max_id=0&imei=864895024087254&os_type=Android&os_version=4.2.2&version=4.0.9&lang=zh-cn '
    res = requests.get(url, headers=headers)
    text = res.text.encode().decode('unicode_escape')
    print(text)
    # str转换为dic
    item = eval(text)
    # 筛选索要的数据
    ls = item['result']['stat']
    dic = {}
    # 存入字典
    for i in ls:
        dic.update({i['name']: i['match_count']})
    # 字典排序
    sorted(dic.items(), key=lambda x: x[1])
    print(dic)
    # 存入文件
    save_to_file(dic)


def save_to_file(dic):
    with open('1.txt', 'w', encoding='utf-8') as f:
        print(type(json.dumps(dic, ensure_ascii=False)))
        f.write(json.dumps(dic, ensure_ascii=False))
        f.close()


main()

 

 类似资料: