一,安装python
官网下载地址:https://www.python.org/downloads/windows/
我下载的是最新的:
- Download Windows x86 web-based installer
自定义安装到:F:\software\python3.7.2
配置环境变量,随便是用户path或者系统path,添加一个,输入:F:\software\python3.7.2
完成标志,cmd进一个文件下,输入:python ,出现执行环境就ok。
二,安装pymysql
可以参见博客:https://blog.csdn.net/mingyuli/article/details/79734393
步骤一:在网址:https://github.com/PyMySQL/PyMySQL 下载zip包,PyMySQL-master.zip,解压到F:\software\python3.7.2\Scripts
Scripts目录下,
步骤二:输入命令:pip install pymysql
提示:Successfully installed pymysql-0.9.3 则成功了。
随机一个文件,cmd进去,输入:python 进入执行环境,再输入:import pymysql 没报错,说明pymysql安装成功。
三,下载mitmproxy
下载mitmproxy-1.0.2-windows.zip 这个zip包,将里面的文件:mitmdump.exe 和 mitmweb.exe 放到F:\software\python3.7.2\Lib\site-packages
即python的lib的site-packages文件夹下,将test.py也放到此目录下。因为放这里,才能在脚本里找到pymysql模块。别的地方运行 mitmdump -s test.py 会报错,import pymysql
的pymysql找不到。
四,双击site-packages文件夹下的mitmweb.exe,会出现一个网页,地址是:http://127.0.0.1:8081/#/flows 。
五,手机连代理,你手机输入你电脑的ip,端口8080,安装证书,在你手机浏览器输入网址:http://mitm.it/
会出现,四个大图标,分别是:Apple,Windows,Android,Other,然后我选择Apple,允许,安装,出现,已验证。完成。
六,在site-packages文件下cmd进入,输入:mitmdump -s test.py
完成。在黑窗口能看见你代理的url,状态等抓的信息。
七 test.py抓包脚本
import json import pymysql import time from urllib.parse import urlparse import json def save_to_mysql(data): res=urlparse(data.request.url) method = 1 if data.request.method=='GET' else 2 ajaxdata = json.dumps(data.response.text) #url=res.path+'?'+res.params+res.query yuming=res.scheme+'://'+res.netloc #除去域名以外的完整url url=data.request.url.split(yuming)[1] #这是几个壳的生产域名 if yuming in '域名1,域名2,域名3,域名4,域名5,域名6': try: conn = pymysql.connect(host='a.b.c.d', port=3306, user='aaaa', password='aaaa', db='aaaa', charset="utf8") #获取会话指针 cursor = conn.cursor() insert_sql = "INSERT INTO interf(url,res,method) VALUES(%s,%s,%s)" print('33333333333333333333333333333333',url) #执行SQL语句 cursor.execute(insert_sql, (url,ajaxdata,method)) #提交 conn.commit() #关闭 cursor.close() conn.close() except Exception as e: print('wrong' + e) def response(flow): save_to_mysql(flow)
这段代码的意思是:抓取你手机正在访问的信息,如果域名在这个域名范围中,则将这个url的数据存到MySql中。interf表三个字段:url,res,method
八 编写一个node服务,查询出所有url
sql语句:select * from interf
九 pm2部署
十轮询 写一个静态页面,执行node接口查出所有url,然后每隔5秒轮询一次接口,成功失败,在页面进行显示。