移动端数据爬取

移动端数据爬取

  1.  抓包工具进行时转包获取url等信息-----------常用抓包工具fiddler青花瓷miteproxy
  2.  通过代码发起请求;
  3.  获取响应数据;
  4.  进行数据解析;
  5.  数据持久化。

fiddler抓包工具

   Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

  客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。 

  (1)下载fiddler之后直接一步下一步安装即可。    

  (2)fiddler默认只支持http协议的转发,要想支持https协议的转发和抓取,需要进行设置,安装证书。(Tools---->Options---->HTTPS)

  

  (3)允许其他设备也能使用fiddler进行代理转发请求和响应,需要如下配置:(Tools---->Options---->Connections),配置端口号如图8888

  

  (4)在浏览器访问fiddler代理:http://localhost:8888或者http://192.168.137.1:8888,出现如下页面表示正常,FiddlerRoot certificate是移动端需要安装的证书。

  

移动端设置

  (1)移动端设备必须和fiddler在同一网段才能使用fiddler抓包,可以手机连接电脑热点,然后手动设置代理指定fiddler代理的ip(192.168.137.1)和端口(8888)。

     

  (2)证书安装:直接在浏览器输入http://192.168.137.1:8888,下载证书FiddlerRoot certificate后安装或者通过其他方式发送到手机进行安装信任!

      ①安卓设备:把证书放入手机的内置或外置存储卡上,然后通过手机的"系统安全-》从存储设备安装"菜单安装证书。 然后找到拷贝的FiddlerRoot.cer进行安装即可。安装好之后,可以在信任的凭证中找到我们已经安装好的安全证书。

        

      ②苹果设备:在浏览器下载证书进入手机设置---->通用---->描述文件---->安装,然后设置---->通用---->关于本机---->证书信任设置---->开启fiddler证书信任

        

Fiddler对移动端请求进行抓包

  案例一:句读app数据采集  

 1 '''
 2 手机app句读【广场】爬取
 3     1.打开手机句读app
 4     2.点击下边第三个导航,默认就是【广场】
 5     3.在fiddler进行抓包,拿到api如下
 6     4.向下滑动手机,查看抓包工具,找出请求链接进行对比,都是通过get请求,起始位置不同,因此可以简单在第一次请求时设置请求条数即可大量获取
 7 '''
 8 import requests
 9 num=10000#自定义采集数量
10 url=f'https://judouapp.com/api/v5/statuses?app_key=af66b896-665e-415c-a119-6ca5233a6963&channel=App%20Store&device_id=18a053095ad095fa6c331b7036f589a4&device_type=iPhone10%2C3&pagesign=&per_page={num}&platform=ios&signature=f99a2253c0636fd1de73e82de39fa0e6&system_version=12.3.1&timestamp=1565141295&token=e11dda42765099ff0610bfce807ba440&version=3.8.0&version_code=51'
11 headers={
12 'Accept':'*/*',
13 'Accept-Language':'zh-Hans-CN;q=1, en-CN;q=0.9, en-US;q=0.8',
14 'Connection':'keep-alive',
15 'Accept-Encoding':'br, gzip, deflate',
16 'User-Agent':'JudouRili/3.8.0 (iPhone; iOS 12.3.1; Scale/3.00)',
17 }
18 
19 response=requests.get(url,headers=headers).json()
20 print(len(response["data"]))
21 fp=open('句读.txt','w',encoding='utf-8')
22 for index,data in enumerate(response["data"]):
23     nickname=data["user"]["nickname"]
24     content=data["content"]
25     url=data["share_url"]
26     published_at=data["published_at"]
27     fp.write(f'{index+1}/{num+1}[{published_at}]{nickname}----{url}
	{content}

------------------------------------')
句读app爬取

  案例二:抖音app小视频爬取

 1 '''
 2 通过抓包工具获取抖音个人信息的请求连接,通过requests请求获取视频连接;
 3 此案例是登陆之后好友的抖音视频,注意cookie有效期
 4 '''
 5 import os
 6 import requests
 7 url = 'https://api-hl.amemv.com/aweme/v1/aweme/post/?version_code=7.2.1&pass-region=1&pass-route=1&js_sdk_version=1.17.4.3&app_name=aweme&vid=03AF1BE2-1C49-42F4-9280-4CA78E8554F3&app_version=7.2.1&device_id=48188949731&channel=App%20Store&mcc_mnc=46001&aid=1128&screen_width=1125&openudid=bb6af869d6a21b959b2efc1414af434af4244f52&os_api=18&ac=WIFI&os_version=12.3.1&device_platform=iphone&build_number=72100&device_type=iPhone10,3&iid=80760036119&idfa=FA5BEC32-3917-4E54-92C1-8130C8B5C9FC&min_cursor=0&user_id=104290453971&count=21&max_cursor=0'
 8 headers = {
 9     'Connection':'keep-alive',
10     'x-Tt-Token':'00c5298f55f17f29df1f5870c60971c74eff742bc167d881418c39c6384740987a57ff8920ac697ca665a8c8dea7e50ec42',
11     'sdk-version':'1',
12     'User-Agent':'Aweme 7.2.1 rv:72100 (iPhone; iOS 12.3.1; zh_CN) Cronet',
13     'x-tt-trace-id':'00-d3ac15e52ed8ee0f911103e2f883d140-d3ac15e52ed8ee0f-01',
14     'Accept-Encoding':'gzip, deflate',
15     'Cookie':'tt_webid=6640617808751937028; __tea_sdk__user_unique_id=6640617808751937028; _ga=GA1.2.1852759965.1533561988; odin_tt=9f303c67997d51ed06eb85033ded2c41c8a051aafc15049d416669246d4a8fc9fbb0ee3cb48b15736c2cd7a1c68e0066; sid_guard=c5298f55f17f29df1f5870c60971c74e%7C1563533383%7C5184000%7CTue%2C+17-Sep-2019+10%3A49%3A43+GMT; uid_tt=d91cf1be6d56ed8851460c54c4bb7b47; sid_tt=c5298f55f17f29df1f5870c60971c74e; sessionid=c5298f55f17f29df1f5870c60971c74e; install_id=80760036119; ttreq=1$10c1e479908eed52765e8ee12a84e43e2253c1f3',
16     'X-Khronos':'1565148064',
17     'X-Pods':'',
18     'X-Gorgon':'83000e560000c220307e34ef71495882f95411d88045512c5c4a',
19 
20 }
21 response_json = requests.get(url, headers=headers).json()#相应的是json格式
22 video_list=response_json["aweme_list"]
23 #创建好友视频信息列表
24 video_url=[]
25 for video_info in video_list:
26     nickname =video_info["author"]["nickname"]#昵称
27     gender=video_info["author"]["gender"]#性别
28     desc=video_info["desc"]#文字描述
29     print(desc)
30     player_addr=video_info["video"]["play_addr"]["url_list"][0]#播放地址
31     video_url.append((f'{nickname}({gender})',desc,player_addr))
32 
33 print(video_url)
34 #循环遍历视频列表,分条采集视频数据
35 for video in video_url:
36     if not os.path.exists(video[0]):
37         os.mkdir(video[0])
38     path = os.path.join(video[0], video[1] + '.mp4')
39     with open(path,'wb')as f:
40         f.write(requests.get(video[2]).content)
抖音app爬取
原文地址:https://www.cnblogs.com/open-yang/p/11314705.html