zoukankan      html  css  js  c++  java
  • 移动端数据爬取

    移动端数据爬取

    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爬取
  • 相关阅读:
    java中的常用内存区域总结
    访问权限修饰符-static-final-this-super-匿名对象
    Scanner-String-StringBuilder-API
    This application failed to start because it could not find or load the Qt platform plugin “windows”错误解决方法
    如何优雅的写C++代码(一)
    Color Map的生成方法
    加色法和减色法
    无线电入门书籍推荐
    玩业余无线电的前期准备
    iPhone 上拨号键盘的发音规律
  • 原文地址:https://www.cnblogs.com/open-yang/p/11314705.html
Copyright © 2011-2022 走看看