自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我用Python爬了《王者榮耀盒子》,發(fā)現(xiàn)王者榮耀最強(qiáng)套路!

原創(chuàng)
開(kāi)發(fā) 后端
程序員的鄙視鏈,您聽(tīng)說(shuō)過(guò)嗎?話(huà)說(shuō):老婆漂亮的程序員,鄙視老婆不漂亮的程序員;有老婆的程序員,鄙視沒(méi)有老婆的程序員;沒(méi)有老婆有女朋友的程序員,鄙視單身狗。

[[201639]]

【51CTO.com原創(chuàng)稿件】程序員的鄙視鏈,您聽(tīng)說(shuō)過(guò)嗎?話(huà)說(shuō):老婆漂亮的程序員,鄙視老婆不漂亮的程序員;有老婆的程序員,鄙視沒(méi)有老婆的程序員;沒(méi)有老婆有女朋友的程序員,鄙視單身狗。

在單身狗之間,才有語(yǔ)言、編輯器和操作系統(tǒng)的互相鄙視。不知為何,看到這句話(huà)的時(shí)候,我的內(nèi)心陣陣絞痛。

[[201640]]

現(xiàn)在看看,這游戲也是如此。玩星際的,鄙視玩 Dota 的;玩 Dota 的,鄙視玩 LOL 的;玩 LOL 的,鄙視玩王者榮耀的。

雖說(shuō)王者榮耀處于游戲鄙視鏈的低端,但是不得不說(shuō),它確實(shí)有自己獨(dú)到的魅力,正因?yàn)樗档土送婕业拈T(mén)檻,才有了如今的全民王者的熱潮。你永遠(yuǎn)不知道自己匹配的隊(duì)友和對(duì)手是老人,還是小孩。或者換種說(shuō)法,是人,還是動(dòng)物?

[[201641]]

毫無(wú)疑問(wèn),王者榮耀從全民熱度等諸多表現(xiàn)上看,是非常成功的游戲??芍^男女老少通吃,本文不討論到底是女大學(xué)生坑,還是小學(xué)生坑,這樣高難度的問(wèn)題。咱玩點(diǎn)簡(jiǎn)單的,讓我先看一款王者榮耀神器-王者榮耀盒子。

《王者榮耀盒子》是專(zhuān)門(mén)為《王者榮耀》玩家量身打造的一款攻略應(yīng)用,可謂上分必備神器,這里有職業(yè)選手教你英雄出裝、銘文搭配和各種對(duì)線(xiàn)團(tuán)戰(zhàn)技巧,同時(shí)它也整合最全的游戲資訊以及游戲?qū)崟r(shí)動(dòng)態(tài)。先看看它長(zhǎng)什么樣:

APP 下載地址:http://www.eoemarket.com/soft/870210.html

本文內(nèi)容就是爬取《王者榮耀盒子》這款 APP 上的信息,廢話(huà)不多說(shuō),直接開(kāi)始實(shí)戰(zhàn)!

運(yùn)行平臺(tái): Windows

Python版本: Python3.x

IDE: Sublime text3

什么是 Fiddler?

Fiddler 是位于客戶(hù)端和服務(wù)器端的 HTTP 代理,也是目前最常用的 HTTP 抓包工具之一 。

它能夠記錄客戶(hù)端和服務(wù)器之間的所有 HTTP 請(qǐng)求,可以針對(duì)特定的 HTTP 請(qǐng)求,分析請(qǐng)求數(shù)據(jù)、設(shè)置斷點(diǎn)、調(diào)試 Web 應(yīng)用、修改請(qǐng)求的數(shù)據(jù),甚至可以修改服務(wù)器返回的數(shù)據(jù),功能非常強(qiáng)大,是 Web 調(diào)試的利器。

既然是代理,也就是說(shuō):客戶(hù)端的所有請(qǐng)求都要先經(jīng)過(guò) Fiddler,然后轉(zhuǎn)發(fā)到相應(yīng)的服務(wù)器,反之,服務(wù)器端的所有響應(yīng),也都會(huì)先經(jīng)過(guò) Fiddler 然后發(fā)送到客戶(hù)端。

基于這個(gè)原因,F(xiàn)iddler 支持所有可以設(shè)置 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應(yīng)用程序。

使用了 Fiddler 之后,Web 客戶(hù)端和服務(wù)器的請(qǐng)求如下所示:

利用可以設(shè)置代理的這個(gè)特點(diǎn),我們就可以對(duì)手機(jī) APP 進(jìn)行抓包了。怎么設(shè)置?不急不急,讓我先把 Fiddler 安裝上吧!

Fiddler 下載地址:http://fiddler2.com/

傻瓜式安裝,一鍵到底。Fiddler 軟件界面如圖所示:

手機(jī) APP 抓包設(shè)置

Fiddler 設(shè)置

打開(kāi) Fiddler 軟件,打開(kāi)工具的設(shè)置。(Fiddler 軟件菜單欄:Tools->Options)

在 HTTPS 中設(shè)置如下:

在 Connections 中設(shè)置如下,這里使用默認(rèn) 8888 端口,當(dāng)然也可以自己更改,但是注意不要與已經(jīng)使用的端口沖突:

安全證書(shū)下載

在電腦瀏覽器中輸入地址: http://localhost:8888/,點(diǎn)擊 FiddlerRoot certificate,下載安全證書(shū):

安全證書(shū)安裝

證書(shū)是需要在手機(jī)上進(jìn)行安裝的,這樣在電腦 Fiddler 軟件抓包的時(shí)候,手機(jī)使用電腦的網(wǎng)卡上網(wǎng)才不會(huì)報(bào)錯(cuò)。

將下載好的 FiddlerRoot.cer 安裝證書(shū)拷貝到手機(jī)中,然后進(jìn)行證書(shū)安裝。以小米 5 手機(jī)為例:設(shè)置(Settings)->(系統(tǒng)和設(shè)備中的)更多設(shè)置->系統(tǒng)安全->從存儲(chǔ)設(shè)備安裝:

然后找到拷貝的 FiddlerRoot.cer 進(jìn)行安裝即可。安裝好之后,可以在信任的憑證中找到我們已經(jīng)安裝好的安全證書(shū),在用戶(hù)中可以看到證書(shū)如下:

局域網(wǎng)設(shè)置

想要使用 Fiddler 進(jìn)行手機(jī)抓包,首先要確保手機(jī)和電腦的網(wǎng)絡(luò)在一個(gè)內(nèi)網(wǎng)中,可以讓電腦和手機(jī)都連接同一個(gè)路由器。

當(dāng)然,也可以讓電腦開(kāi)放 WiFi 熱點(diǎn),手機(jī)連入。這里,我使用的方法是,讓手機(jī)和電腦同時(shí)連入一個(gè)路由器中。***,讓手機(jī)使用電腦的代理 IP 進(jìn)行上網(wǎng)。

首先,查看電腦的 IP 地址,在 cmd 中使用命令 ipconfig 查看電腦 IP 地址。找到無(wú)線(xiàn)局域網(wǎng) WLAN 的 IPv4 地址,記下此地址。

在手機(jī)上,點(diǎn)擊連接的 WiFi 進(jìn)行網(wǎng)絡(luò)修改,添加代理。進(jìn)行手動(dòng)設(shè)置,主機(jī)名即為上圖中找到的 IP 地址,端口號(hào)即為 Fiddler 設(shè)置中的端口號(hào) 8888:

Fiddler 手機(jī)抓包測(cè)試

上述步驟都設(shè)置完成之后,用手機(jī)瀏覽器打開(kāi)百度首頁(yè),我們就可以順利抓包了,截圖如下:

實(shí)戰(zhàn)走起

下載英雄圖片

先來(lái)個(gè)簡(jiǎn)單的例子熱熱身,我想將《英雄聯(lián)盟盒子》中的英雄圖片下載下來(lái),該如何操作?

先使用 Fiddler 抓包看一下,在手機(jī) APP《英雄聯(lián)盟盒子》中的菜單中點(diǎn)擊英雄,電腦 Fiddler 就會(huì)抓包如下:

可以看到,GET 請(qǐng)求的 url 地址,和返回的 JSON 格式的信息。那么編寫(xiě)代碼如下:

  1. import requests 
  2. if __name__ == '__main__':    
  3.     headers = {'Accept-Charset''UTF-8'
  4.             'Accept-Encoding''gzip,deflate'
  5.             'User-Agent''Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)'
  6.             'X-Requested-With''XMLHttpRequest'
  7.             'Content-type''application/x-www-form-urlencoded'
  8.             'Connection''Keep-Alive'
  9.             'Host''gamehelper.gm825.com'
  10.     heros_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=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8" 
  11.     req = requests.get(url = heros_url, headers = headers).json() 
  12.     print(req['list']) 

從代碼運(yùn)行結(jié)果中可以看到,百里玄策的英雄 ID 為 104,他的圖片存放地址為 http://pic.wankacn.com/2017-08-04_59844776a6adf.png

知道了這些信息,我們就可以將這些英雄的圖片進(jìn)行下載了,編寫(xiě)代碼如下:

  1. from urllib.request import urlretrieve 
  2. import requests 
  3. import os 
  4. ""
  5. 函數(shù)說(shuō)明:下載《英雄聯(lián)盟盒子》中的英雄圖片 
  6. Parameters: 
  7.     heros_url - GET請(qǐng)求地址,通過(guò)Fiddler抓包獲取 
  8.     header - header信息 
  9. Returns
  10.     無(wú) 
  11. Author: 
  12.     Jack Cui 
  13. Blog: 
  14.     http://blog.csdn.net/c406495762 
  15. Modify
  16.     2017-08-07 
  17. ""
  18. def hero_imgs_download(heros_url,header): 
  19.     req = requests.get(url = heros_url, headers = header).json() 
  20.     hero_num = len(req['list']) 
  21.     print('一共有%d個(gè)英雄' % hero_num) 
  22.     hero_images_path = 'hero_images' 
  23.     for each_hero in req['list']: 
  24.         hero_photo_url = each_hero['cover'
  25.         hero_name = each_hero['name'] + '.jpg' 
  26.         filename = hero_images_path + '/' + hero_name 
  27.         if hero_images_path not in os.listdir(): 
  28.             os.makedirs(hero_images_path) 
  29.         urlretrieve(url = hero_photo_url, filename = filename) 
  30. if __name__ == '__main__':    
  31.     headers = {'Accept-Charset''UTF-8'
  32.             'Accept-Encoding''gzip,deflate'
  33.             'User-Agent''Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)'
  34.             'X-Requested-With''XMLHttpRequest'
  35.             'Content-type''application/x-www-form-urlencoded'
  36.             'Connection''Keep-Alive'
  37.             'Host''gamehelper.gm825.com'
  38.     heros_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=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8" 
  39.     hero_imgs_download(heros_url,headers) 

運(yùn)行上述代碼,看下結(jié)果,72 個(gè)英雄的圖片,分分鐘搞定:


是不是很簡(jiǎn)單?接下來(lái),再玩一個(gè)加點(diǎn)難度的。

英雄推薦出裝查詢(xún)助手

點(diǎn)擊百里玄策這個(gè)英雄,可以看到,里面有他的簡(jiǎn)介,包括技能介紹,以及推薦出裝等。那么,我們就了利用這個(gè)做一個(gè)自己的英雄出裝查詢(xún)小助手吧。

 

手機(jī)點(diǎn)擊百里玄策這個(gè)英雄,可以在電腦 Fiddler 看到如下抓包內(nèi)容:

我們看下 GET 請(qǐng)求的 URL:

  1. http://gamehelper.gm825.com/wzry/hero/detail?hero_id=104&channel_id=90009a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8 

很有特點(diǎn)發(fā)現(xiàn)了嗎?在 url 的 heroid 為 104,在上個(gè)小實(shí)例中,我們發(fā)現(xiàn),這個(gè) 104 正好是英雄的 ID,那么是不是可以通過(guò)設(shè)置這個(gè) ID 來(lái)訪問(wèn)不同的英雄界面呢?

測(cè)試一下答案就出來(lái)了,我們將 ID 改為 103,也就是女?huà)z的 heroid,編寫(xiě)代碼如下:

  1. import requests 
  2. if __name__ == '__main__':    
  3.     headers = {'Accept-Charset''UTF-8'
  4.             'Accept-Encoding''gzip,deflate'
  5.             'User-Agent''Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)'
  6.             'X-Requested-With''XMLHttpRequest'
  7.             'Content-type''application/x-www-form-urlencoded'
  8.             'Connection''Keep-Alive'
  9.             'Host''gamehelper.gm825.com'
  10.     hero_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=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8".format('103'
  11.     req = requests.get(url = hero_url, headers = headers).json() 
  12.     print(req['info']) 

運(yùn)行上述代碼,我們可以看到,打印的信息確實(shí)是英雄女?huà)z的信息,返回的信息顯示,這個(gè)英雄還沒(méi)有上線(xiàn)。

推薦出裝保存在 equip_choice 中,可以看到這里沒(méi)有給出裝備的名字,只有裝備的 equip_id,那么在寫(xiě)推薦出裝小程序之前,我們需要獲取所有裝備的 ID。

怎樣獲取武器的信息?抓包方法同上,點(diǎn)擊裝備大全:

通過(guò) Fiddler 抓包信息,編寫(xiě)代碼如下:

  1. import requests 
  2. if __name__ == '__main__':    
  3.     headers = {'Accept-Charset''UTF-8'
  4.             'Accept-Encoding''gzip,deflate'
  5.             'User-Agent''Dalvik/2.1.0 (Linux; U; Android 6.0.1; MI 5 MIUI/V8.1.6.0.MAACNDI)'
  6.             'X-Requested-With''XMLHttpRequest'
  7.             'Content-type''application/x-www-form-urlencoded'
  8.             'Connection''Keep-Alive'
  9.             'Host''gamehelper.gm825.com'
  10.     weapon_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=12.0.3&version_code=1203&cuid=2654CC14D2D3894DBF5808264AE2DAD7&ovr=6.0.1&device=Xiaomi_MI+5&net_type=1&client_id=1Yfyt44QSqu7PcVdDduBYQ%3D%3D&info_ms=fBzJ%2BCu4ZDAtl4CyHuZ%2FJQ%3D%3D&info_ma=XshbgIgi0V1HxXTqixI%2BKbgXtNtOP0%2Fn1WZtMWRWj5o%3D&mno=0&info_la=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&info_ci=9AChHTMC3uW%2BfY8%2BCFhcFw%3D%3D&mcc=0&clientversion=&bssid=VY%2BeiuZRJ%2FwaXmoLLVUrMODX1ZTf%2F2dzsWn2AOEM0I4%3D&os_level=23&os_id=dc451556fc0eeadb&resolution=1080_1920&dpi=480&client_ip=192.168.0.198&pdunid=a83d20d8" 
  11.     req = requests.get(url = weapon_url, headers = headers).json() 
  12.     print(req['list']) 

這樣我們就輕松得到了各個(gè)裝備的信息:

到這里,我們就可以整合代碼了,首先通過(guò)獲取每個(gè)英雄的 ID,然后根據(jù)每個(gè)英雄的 ID,再獲得英雄的詳細(xì)信息,包括推薦出裝,***通過(guò)推薦的裝備 ID,找到裝備的信息并打印出來(lái)。

根據(jù)實(shí)現(xiàn)效果,自己編寫(xiě)代碼試一試如何?《王者榮耀》出裝小助手,運(yùn)行效果如圖所示:

如果功能已經(jīng)實(shí)現(xiàn)了,那么先恭喜一聲!

上述功能代碼獲取地址:https://github.com/Jack-Cherish/python-spider/blob/master/hero.py ,歡迎 Follow、Star!

總結(jié)

本文的例子對(duì)于入門(mén)手機(jī) APP 內(nèi)容的爬取有一定的幫助作用。趁著《王者榮耀盒子》APP 沒(méi)有更新,很好爬,趕緊動(dòng)手實(shí)踐吧!

爬取 APP 的內(nèi)容和爬取網(wǎng)頁(yè)的思路是一樣的,都是通過(guò)抓包進(jìn)行分析。如有問(wèn)題,請(qǐng)留言。如有錯(cuò)誤,還望指正,謝謝!

催家華

知名博客博主

現(xiàn)就讀于東北大學(xué)模式識(shí)別與智能系統(tǒng)專(zhuān)業(yè)。本科期間,曾擔(dān)任學(xué)生會(huì)”科技創(chuàng)新中心主任”一職,負(fù)責(zé)組織各類(lèi)科技競(jìng)賽相關(guān)活動(dòng)。與此同時(shí),熱愛(ài)科技競(jìng)賽,曾于 2015 年獲得第十屆全國(guó)大學(xué)生“飛思卡爾”杯智能車(chē)競(jìng)賽全國(guó)一等獎(jiǎng)。研究生期間,致力于機(jī)器學(xué)習(xí),在知名博客已取得了不錯(cuò)的關(guān)注度。

 

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2017-12-25 16:20:40

Python自動(dòng)化王者榮耀

2017-11-27 11:02:46

高并發(fā)突發(fā)池系統(tǒng)架構(gòu)王者榮耀

2017-10-30 08:20:16

王者榮耀騰訊云游戲

2020-05-02 15:10:53

AI 王者榮耀人工智能

2017-07-10 14:20:45

2017-06-09 18:31:00

電競(jìng)手游王者榮耀

2020-09-01 10:46:55

微服務(wù)架構(gòu)服務(wù)器

2017-07-17 12:17:38

2020-07-10 08:27:55

王者榮耀微服務(wù)架構(gòu)

2021-08-06 06:49:19

王者榮耀項(xiàng)目IDEA

2021-04-21 07:53:13

Android屏幕刷新

2017-10-16 09:44:19

大數(shù)據(jù)數(shù)據(jù)分析王者榮耀

2017-10-08 10:22:00

大數(shù)據(jù)王者榮耀詞匯

2017-10-10 14:52:07

后臺(tái)技術(shù)架構(gòu)

2019-12-24 16:46:10

AI 數(shù)據(jù)人工智能

2023-08-31 07:53:56

Redis內(nèi)存數(shù)據(jù)庫(kù)

2016-09-26 17:06:29

2020-09-07 09:55:04

技術(shù)資訊

2018-01-02 09:00:51

大數(shù)據(jù)營(yíng)銷(xiāo)王者榮耀

2020-07-17 20:55:49

Server微服務(wù)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)