一,安装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 = if data.request.method=='GET' else
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)[]
#这是几个壳的生产域名
if yuming in '域名1,域名2,域名3,域名4,域名5,域名6':
try:
conn = pymysql.connect(host='a.b.c.d', port=, user='aaaa', password='aaaa', db='aaaa', charset="utf8")
#获取会话指针
cursor = conn.cursor()
insert_sql = "INSERT INTO interf(url,res,method) VALUES(%s,%s,%s)"
print('',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秒轮询一次接口,成功失败,在页面进行显示。