溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在Python3中利用Fidder爬取APP

發(fā)布時間:2021-04-07 16:36:56 來源:億速云 閱讀:194 作者:Leah 欄目:開發(fā)技術(shù)

怎么在Python3中利用Fidder爬取APP?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

一、環(huán)境配置

1、Fidder的安裝和配置

沒有安裝Fidder軟件的可以進入 這個網(wǎng)址 下載,然后就是傻瓜式的安裝,安裝步驟很簡單。在安裝完成后,打開軟件,進行如下設(shè)置:

怎么在Python3中利用Fidder爬取APP

怎么在Python3中利用Fidder爬取APP

這里使用默認的8888端口就好了,如果要修改的話,要避免和其他端口沖突。

2、手機的配置

首先打開cmd,輸入ipconfig查看IP地址,記錄下這個IP地址:

怎么在Python3中利用Fidder爬取APP

想要使用FIdder進行手機抓包,要讓手機和PC處在同一個內(nèi)網(wǎng)中,方法就是連接同一個無線網(wǎng)絡(luò)。然后打開手機,進入Wi-FI設(shè)置修改代理為手動代理,再把上面的IP地址和8888端口號輸入進去:

怎么在Python3中利用Fidder爬取APP

然后打開瀏覽器,輸入http://127.0.0.1:8888,會看到如下界面,點擊FidderRoot certificate下載證書:

怎么在Python3中利用Fidder爬取APP

下載好之后如果出現(xiàn)無法安裝的情況,可以進入設(shè)置進行手動安裝證書,我的安裝步驟是“設(shè)置->系統(tǒng)安全->從SD卡安裝”,不同的手機安裝步驟不同,不過也差不多吧。

3、抓包測試

在完成上面的步驟之后,我們先進行一下抓包測試,打開手機的瀏覽器,然后打開百度的網(wǎng)頁,可以看到出現(xiàn)了對應(yīng)的包,這樣就可以進行之后的抓取了。

怎么在Python3中利用Fidder爬取APP

二、抓取步驟

這次使用的APP是王者榮耀盒子,打開APP,點擊英雄,可以看到第一個英雄-上官婉兒,然后點進去。

怎么在Python3中利用Fidder爬取APP

然后在Fidder中可以找到如下這個包:

怎么在Python3中利用Fidder爬取APP

然后在右側(cè)可以看到如下信息:

怎么在Python3中利用Fidder爬取APP

把這些信息復(fù)制一下,然后解碼一下就可以看到如下數(shù)據(jù)了,包括英雄名字、英雄圖片、英雄技能等信息:

怎么在Python3中利用Fidder爬取APP

但是在推薦裝備的信息里,只有裝備的id值,卻沒有裝備的名字,那我們要怎么獲得這些裝備的名字呢?還是同樣的辦法,點擊查看所有裝備,然后抓包,找到對應(yīng)的包,再進行爬取。在獲得所有的裝備和對應(yīng)的id后,可以再爬取所有的英雄名稱,然后就可以制作我們自己的英雄攻略了==

運行結(jié)果如下:

怎么在Python3中利用Fidder爬取APP

三、完整代碼

"""
 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)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI