mitmproxy爬APP数据
来源:互联网 发布:澳大利亚留学费用知乎 编辑:程序博客网 时间:2024/06/03 15:11
mitmproxy是一个支持SSL的HTTP中间人代理工具,它允许你检查HTTP和HTTPS流量并支持直接改写请求。它位于客户端和Server端之间,它可以获取客户端的Request,然后修改再发送给Server端;Server端得到Request之后再发出相应的Response,又会被mitmproxy拦截,如果你想修改response,便可修改后再发给客户端。
pip install mitmproxy
打开cmd-> ipconfig 查看ip
设置端口
mitmweb -b ip地址 -p 3333 默认的端口是8080
然后设置手机wlan代理
手机端wlan ->当前连的网络 i:http proxy->manual设置ip和port
我们可以看到url, header, params的信息
response = requests.get(url=url, headers=headers)
返回json格式的字符串
result = json.loads(response.text)
result['info']['list']是我们要的数据
以上是首页的信息,每一个任务还有“查看详情页”,可以用相同的办法抓取详情页里的详细信息。
上图中的key 里的task_id 是每一个任务的id,根据这个id我们可以进入每个详情页面。
def get_details(task_id): headers = { 'Host': '...', 'version':'300050000', 'x-cli-ver': '3.5.0', 'timestamp': '1490255088114', 'channel':'AppStore', 'Accept':'*/*', 'x-cli-ch': 'AppStore', 'Proxy-Connection': 'keep-alive', 'Accept-Language':'en-CN;q=1, zh-Hans-CN;q=0.9', 'Accept-Encoding':'gzip, deflate', 'x-cli-model':'iPhone 6s', 'x-cli-os': 'iOS10.1.1', 'sessionid' : '......', 'User-Agent': 'YNDriver/3.5.0 (iPhone; iOS 10.1.1; Scale/2.00)', 'Connection': 'keep-alive', 'x-cli-imei': '1A09A2B6-4D5B-4AF2-BC93-B76DAD8B8B3E'} url = 'http://.....detail_v2' params = { 'coord_sys': '2', 'recomm_key': '3692B31DBBE3932CF988CAB666FDF5AB', #'sign': 'c2ce1baceeb32d25d86e5de32d486b4f', 'task_id': task_id} response = requests.get(url=url, params=params, headers=headers) result = json.loads(response.text) return result['info']['detail_infomation']
知道了如何获取数据,我们可以开始爬数据了
from time import sleep
while 1: try: result_list = get_response() except: sleep(200) continue
为了避免访问不成功程序停止运行,我们可以加入try except,若访问失败,则自动休息200s后再继续尝试访问
为了存储数据,以及避免放入重复的数据,我们手写一个查重和存放数据的对象Processing
import pymongoclass Processing(object): def __init__(self): self.client = pymongo.MongoClient('192.xxx.x.xxx') # 创建一个连接 self.client['test'].authenticate('username', 'password') # 登陆信息 self.db = self.client['dbname'] # 创建数据库 self.collection = self.db['collection_name'] # 创建collection类似表 def find_exist(self, task_id): find_result = self.collection.find_one({'task_id': task_id}) return find_result def insert(self, task): self.collection.insert_one(task) # 插入数据
创建一个Processing实例
while 1: try: result_list = get_response() except: sleep(200) continue dump_data = Processing() for task in result_list: task_id = task['task_id'] if dump_data.find_exist(task_id=task_id): break # 如果task_id存在,则直接等下一次刷新 else: try: details = get_details(task_id) # 如果订单结束报价,就get不到什么了。。。 task['quote'] = get_quote(details) task['vehicle'] = get_vehicle(details) except: task['vehicle'] = 'over time' task['quote'] = 'over time' task['capture_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) dump_data.insert(task) print(task_id) sleep(200) # 休息200秒再爬
- 安装CA证书(https抓包用)在手机或pc机上打开浏览器访问 mitm.it 这个地址,选择你当前平台的图标,点击安装
- mitmproxy的操作链接列表
阅读全文
0 0
- mitmproxy爬APP数据
- mitmproxy加密数据分析
- mitmproxy
- mitmproxy
- mitmProxy 总结
- mitmProxy介绍
- Mitmproxy 学习
- 爬取‘即刻’APP数据
- mitmproxy 自身代理设置
- Mitmproxy的基本使用
- mitmproxy的使用
- https流量分析工具mitmproxy
- mitmproxy中libmproxy简单介绍
- centos安装pip和mitmproxy
- mitmproxy抓取https请求实践
- Mitmproxy 是怎么工作的
- App数据分析
- ios app保存数据
- 通用类型的两路归并算法实现(三)——运用Comparator实现更加通用的两路归并算法
- (软件工程)习题2.4
- Java设计模式——适配器模式(Adapter Pattern)
- NVIDIA Jetson TX1 系列开发教程之十二:libcurl、RapidJSON安装
- SpringMvc+POI 处理Excel的导入操作需要的所有环境
- mitmproxy爬APP数据
- ThinkPHP5微信支付扩展库(这恐怕是世界上最简单的微信支付类库了~)
- maven学习总结
- 爬虫开发过程常见的问题
- 3d数学基础:常用向量相关运算
- Junit和spring整合,使用Spring托管对象进行依赖注入,方便测试
- JAVA Spring web mvc 学习 之 7:拦截器(登录状态验证)
- 【Java基础】[异常处理]try,catch,finally
- Centos7 Mysql 连接不上