Python3爬蟲使用Fidder實現(xiàn)APP爬取示例
之前爬取都是網(wǎng)頁上的數(shù)據(jù),今天要來說一下怎么借助Fidder來爬取手機APP上的數(shù)據(jù)。
一、環(huán)境配置
1、Fidder的安裝和配置
沒有安裝Fidder軟件的可以進入 這個網(wǎng)址 下載,然后就是傻瓜式的安裝,安裝步驟很簡單。在安裝完成后,打開軟件,進行如下設(shè)置:
這里使用默認的8888端口就好了,如果要修改的話,要避免和其他端口沖突。
2、手機的配置
首先打開cmd,輸入ipconfig查看IP地址,記錄下這個IP地址:
想要使用FIdder進行手機抓包,要讓手機和PC處在同一個內(nèi)網(wǎng)中,方法就是連接同一個無線網(wǎng)絡(luò)。然后打開手機,進入Wi-FI設(shè)置修改代理為手動代理,再把上面的IP地址和8888端口號輸入進去:
然后打開瀏覽器,輸入http://127.0.0.1:8888,會看到如下界面,點擊FidderRoot certificate下載證書:
下載好之后如果出現(xiàn)無法安裝的情況,可以進入設(shè)置進行手動安裝證書,我的安裝步驟是“設(shè)置->系統(tǒng)安全->從SD卡安裝”,不同的手機安裝步驟不同,不過也差不多吧。
3、抓包測試
在完成上面的步驟之后,我們先進行一下抓包測試,打開手機的瀏覽器,然后打開百度的網(wǎng)頁,可以看到出現(xiàn)了對應的包,這樣就可以進行之后的抓取了。
二、抓取步驟
這次使用的APP是王者榮耀盒子,打開APP,點擊英雄,可以看到第一個英雄-上官婉兒,然后點進去。
然后在Fidder中可以找到如下這個包:
然后在右側(cè)可以看到如下信息:
把這些信息復制一下,然后解碼一下就可以看到如下數(shù)據(jù)了,包括英雄名字、英雄圖片、英雄技能等信息:
但是在推薦裝備的信息里,只有裝備的id值,卻沒有裝備的名字,那我們要怎么獲得這些裝備的名字呢?還是同樣的辦法,點擊查看所有裝備,然后抓包,找到對應的包,再進行爬取。在獲得所有的裝備和對應的id后,可以再爬取所有的英雄名稱,然后就可以制作我們自己的英雄攻略了==
運行結(jié)果如下:
三、完整代碼
""" Version: Python3.5 Author: OniOn Time: 2018/11/26 21:20 """ import requests # 裝備信息 EQUIP_LIST = [] # 英雄信息 HERO_LIST = [] # 爬取英雄信息 def get_hero(hero_id): url = "http://gamehelper.gm825.com/wzry/hero/detail?hero_id={}&channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=13.0.4.0&version_code=13040&cuid=192384A3D29A295307CA7B96762D3911&ovr=6.0.1&device=Xiaomi_Redmi+4X&net_type=1&client_id=&info_ms=&info_ma=Z6OSFnQs6mXn4axI72A6yENV6NHXHBW%2FwZ6YjXKCGko%3D&mno=0&info_la=zdisjKfT0Zj1UXN2un%2BlyA%3D%3D&info_ci=zdisjKfT0Zj1UXN2un%2BlyA%3D%3D&mcc=0&clientversion=13.0.4.0&bssid=bFL4zw1N%2FGL43totbQy7Q9D8UfrPgiMUFRNSpM25pnY%3D&os_level=23&os_id=a2aa922677827ab1&resolution=720_1280&dpi=320&client_ip=10.12.88.95&pdunid=257ed0277cf4".format( hero_id) res = requests.post(url) js = res.json() img_url = js['info']['big_img'] skill_tips = js['info']['skill_tips'] # 使用技巧 skill_list = [] # 技能介紹 for i in js['info']['skill_list']: desc = i['description'] if '<br>' not in i['description'] else i['description'].replace('<br>', '') skill_list.append({ "name": i['name'] + "({})".format(i['intro']), "type": i['tags'], "desc": desc }) print("英雄圖片鏈接:{}".format(img_url)) print("英雄使用技巧:{}".format(skill_tips)) for i in skill_list: print('{} 類型:{} \n技能介紹:{}'.format(i['name'], i['type'], i['desc'])) print("推薦裝備:", end="") equip_choice = [] # 推薦裝備 all_money = for i in js['info']['equip_choice'][]['list']: equip_choice.append(EQUIP_LIST[int(i['equip_id'])]['name']) all_money += int(EQUIP_LIST[int(i['equip_id'])]['price']) print(' '.join(equip_choice), " (裝備總金額:{})".format(all_money)) # 爬取所有裝備的基本信息 def get_all_equip(): url = "http://gamehelper.gm825.com/wzry/equip/list?channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=13.0.4.0&version_code=13040&cuid=192384A3D29A295307CA7B96762D3911&ovr=6.0.1&device=Xiaomi_Redmi+4X&net_type=1&client_id=&info_ms=&info_ma=Z6OSFnQs6mXn4axI72A6yENV6NHXHBW%2FwZ6YjXKCGko%3D&mno=0&info_la=zdisjKfT0Zj1UXN2un%2BlyA%3D%3D&info_ci=zdisjKfT0Zj1UXN2un%2BlyA%3D%3D&mcc=0&clientversion=13.0.4.0&bssid=bFL4zw1N%2FGL43totbQy7Q9D8UfrPgiMUFRNSpM25pnY%3D&os_level=23&os_id=a2aa922677827ab1&resolution=720_1280&dpi=320&client_ip=10.12.88.95&pdunid=257ed0277cf4" res = requests.get(url) for i in res.json()['list']: EQUIP_LIST.append({ 'price': i['price'], 'name': i['name'], # 'equip_id': i['equip_id'] }) # 爬取所有英雄的基本信息 def get_all_hero(): # 英雄定位: type 1-戰(zhàn)士 2-法師 3-坦克 4-刺客 5-射手 6-輔助 type_list = ['戰(zhàn)士', '法師', '坦克', '刺客', '射手', '輔助'] url = "http://gamehelper.gm825.com/wzry/hero/list?channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=13.0.4.0&version_code=13040&cuid=192384A3D29A295307CA7B96762D3911&ovr=6.0.1&device=Xiaomi_Redmi+4X&net_type=1&client_id=&info_ms=&info_ma=Z6OSFnQs6mXn4axI72A6yENV6NHXHBW%2FwZ6YjXKCGko%3D&mno=0&info_la=zdisjKfT0Zj1UXN2un%2BlyA%3D%3D&info_ci=zdisjKfT0Zj1UXN2un%2BlyA%3D%3D&mcc=0&clientversion=13.0.4.0&bssid=bFL4zw1N%2FGL43totbQy7Q9D8UfrPgiMUFRNSpM25pnY%3D&os_level=23&os_id=a2aa922677827ab1&resolution=720_1280&dpi=320&client_ip=10.12.88.95&pdunid=257ed0277cf4" res = requests.get(url) for i in res.json()['list']: HERO_LIST.append({ "name": i['name'], "id": i['hero_id'], 'type': '/'.join([type_list[int(j) - ] for j in i['type']]) }) if __name__ == '__main__': get_all_hero() length = len(HERO_LIST) print("-" * 50) for i in range(0, length // 5 * 5, 5): print('{}(id:{}) '.format(HERO_LIST[i]['name'], HERO_LIST[i]['id']), end=' ') print('{}(id:{}) '.format(HERO_LIST[i + 1]['name'], HERO_LIST[i + 1]['id']), end=' ') print('{}(id:{}) '.format(HERO_LIST[i + 2]['name'], HERO_LIST[i + 2]['id']), end=' ') print('{}(id:{}) '.format(HERO_LIST[i + 3]['name'], HERO_LIST[i + 3]['id']), end=' ') print('{}(id:{}) '.format(HERO_LIST[i + 4]['name'], HERO_LIST[i + 4]['id'])) for i in range(length // 5 * 5, length): print('{}(id:{}) '.format(HERO_LIST[i]['name'], HERO_LIST[i]['id']), end=' ') print('\n', "-" * 50) get_all_equip() get_hero(input("\n請輸入您想查看的英雄id:"))
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Python數(shù)據(jù)抓取爬蟲代理防封IP方法
- Nginx利用Lua+Redis實現(xiàn)動態(tài)封禁IP的方法
- 詳解Linux防火墻iptables禁IP與解封IP常用命令
- Python3爬蟲全國地址信息
- python爬蟲獲取小區(qū)經(jīng)緯度以及結(jié)構(gòu)化地址
- Python3爬蟲之urllib攜帶cookie爬取網(wǎng)頁的方法
- python爬蟲獲取新浪新聞教學
- Python3爬蟲教程之利用Python實現(xiàn)發(fā)送天氣預報郵件
- Python3爬蟲學習之應對網(wǎng)站反爬蟲機制的方法分析
- Python3爬蟲學習入門教程
- Python反爬蟲技術(shù)之防止IP地址被封殺的講解
相關(guān)文章
selenium動態(tài)數(shù)據(jù)獲取的方法實現(xiàn)
本文主要介紹了selenium動態(tài)數(shù)據(jù)獲取的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-07-07python中round函數(shù)保留兩位小數(shù)的方法
在本篇內(nèi)容里小編給各位分享的是一篇關(guān)于python中round函數(shù)保留兩位小數(shù)的方法及相關(guān)知識點,有興趣的朋友們可以學習下。2020-12-12Tensorflow2.4使用Tuner選擇模型最佳超參詳解
這篇文章主要介紹了Tensorflow2.4使用Tuner選擇模型最佳超參詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11Python對Excel不同的行分別復制不同的次數(shù)
這篇文章主要介紹了如何利用Python實現(xiàn)讀取Excel表格文件數(shù)據(jù),并將其中符合我們特定要求的那一行加以復制指定的次數(shù),感興趣的小伙伴可以學習一下2023-07-07Python實現(xiàn)按目錄層級輸出文件名并保存為excel
當我們發(fā)現(xiàn)電腦的內(nèi)存很滿,或平時工作中文件夾管理不清晰,導致里面的文件數(shù)據(jù)很雜亂,查找很不方便,一個一個文件夾去看去找然后刪除又很浪費時間。本文將介紹如何利用Python實現(xiàn)按目錄層級輸出文件名并保存為excel,需要的可以參考一下2022-02-02