赞
踩
此文章借鉴:https://blog.csdn.net/c406495762/article/details/76850843
作者思路很新奇,所以学习测试了一下,可以成功,特意跟大家分享一下。
准备工作
需要用到工具
fiddler抓包工具
APP王者荣耀盒子
下载fiddler之后设置一下参数 Tools>options
勾选这些HTTPS参数
在Connections中设置如下,这里使用默认8888端口,允许远程连接
附上会话含义对照表
设置完成下载证书
在电脑浏览器中输入地址:http://localhost:8888/
,点击FiddlerRoot certificate
,下载安全证书:
下载完成直接安装到手机上,我测试过也可以直接用的
想要使用Fiddler进行手机抓包,首先要确保手机和电脑的网络在一个内网中,可以使用让电脑和手机都连接同一个路由器。当然,也可以让电脑开放WIFI热点,手机连入。这里,我使用的方法是,让手机和电脑同时连入一个路由器中。最后,让手机使用电脑的代理IP进行上网。
首先,查看电脑的IP地址,在cmd
中使用命令ipconfig
查看电脑IP地址。找到无线局域网WLAN的IPv4地址,记下此地址。
在手机上,点击连接的WIFI进行网络修改,添加代理。进行手动设置,主机名即为上图中找到的IP地址,端口号即为Fiddler设置中的端口号8888,:
然后开始抓包
实战抓取英雄图片代码如下:
- #coding:utf-8
-
- import requests
- import json
-
- def get_url(url):
- headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
- response=requests.get(url,headers=headers)
-
- items=json.loads(response.text)
- for item in items['list']:
- print(item['name'],item['cover'])
- download_image(item['name'],item['cover'])
- def pare_page(url):
- headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
- response=requests.get(url,headers=headers)
- return response.content
-
- def download_image(name,url):
- print("正在下载。。",name)
- content=pare_page(url)
- with open('image/'+name+'.png','wb') as f:
- f.write(content)
- f.close()
-
- def main():
- url='http://gamehelper.gm825.com/wzry/hero/list?channel_id=90001a&app_id=h9044j&game_id=7622&game_name=%E7%8E%8B%E8%80%85%E8%8D%A3%E8%80%80&vcode=12.0.2&version_code=1202&cuid=CB62F540AA842CC623F5D04B0AF0AA84&ovr=6.0.1&device=vivo_vivo+Y55A&net_type=1&client_id=tdFDX5K%2FHfNPTqTETLeftQ%3D%3D&info_ms=1JBRgiBB5cyziodK0kTHXQ%3D%3D&info_ma=p4qcnKI38TZwm5WlOnLOpM5gBT2glGZwYu%2BJW9qzFXg%3D&mno=0&info_la=OzzjfDkXpV43oHSm5KH7Jg%3D%3D&info_ci=OzzjfDkXpV43oHSm5KH7Jg%3D%3D&mcc=0&clientversion=&bssid=TMz3SkD4%2BwNOWao9UUaO6K7n29wgvfSw10nW9F23FHM%3D&os_level=23&os_id=9519457c70dae0ee&resolution=720_1280&dpi=320&client_ip=192.168.4.182&pdunid=b00c08b'
- get_url(url)
-
- if __name__=='__main__':
- main()
最后查看一下,所有英雄就都被下载到本地啦。
下面来抓取一下视频的操作:
- #coding:utf-8
- import json
- import requests
-
- def get_url(url):
- headers={
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
- }
- response=requests.get(url,headers=headers)
-
- items=json.loads(response.text)
- items=items.get('list')
- for item in items:
- print(item.get('title'),item.get('video_url'))
- load_media(item.get('title'),item.get('video_url'))
-
- def do_load_media(url, path):
- try:
- headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.3.2.1000 Chrome/30.0.1599.101 Safari/537.36"}
- # 正在发起请求
- res = requests.get(url, stream=True, headers=headers)
- # 写入收到的视频数据
- with open('media/'+path+'.mp4', 'ab') as file:
- file.write(res.content)
- file.flush()
- print('下载完成')
- except Exception as e:
- print(e)
-
-
- def load_media(path,url):
- print('正在下载视频。。。')
- do_load_media(url, path)
-
-
- if __name__=='__main__':
- url1='http://gamehelper.gm825.com/wzry/video/rec?pn={0}&channel_id=90001a&app_id=h9044j&game_id=7622&game_name=王者荣耀&vcode=12.0.2&version_code=1202&cuid=CB62F540AA842CC623F5D04B0AF0AA84&ovr=6.0.1&device=vivo_vivo+Y55A&net_type=1&client_id=tdFDX5K%2FHfNPTqTETLeftQ%3D%3D&info_ms=1JBRgiBB5cyziodK0kTHXQ%3D%3D&info_ma=p4qcnKI38TZwm5WlOnLOpM5gBT2glGZwYu%2BJW9qzFXg%3D&mno=0&info_la=OzzjfDkXpV43oHSm5KH7Jg%3D%3D&info_ci=OzzjfDkXpV43oHSm5KH7Jg%3D%3D&mcc=0&clientversion=&bssid=NQCEUuOKrAlze6Mfqc0rgO4%2FtM47uuwrhjHXKRh9U5c%3D&os_level=23&os_id=9519457c70dae0ee&resolution=720_1280&dpi=320&client_ip=172.27.35.2&pdunid=b00c08b'
- for i in range(1,3):
- url=url1.format(str(i))
- print('正在爬取第%s页,请稍等'%i)
- get_url(url)
查看下最后结果:
设置一下要爬取页数,视频就会陆陆续续爬取下来。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。