Python 解析har 文件将域名分类导出
2024-08-20 12:44:53
前言
作为程序员平时主要是使用 shadowsocks
作为代理工具的。shadowsocks
有个很明显的优点儿就是可以设置白名单和黑名单。白名单是会走shadowsocks
的自动代理模式。
遇到的问题:
shadowsocks
代理是分白名单和黑名单的。当我访问某个网站,而恰好这个网站的域名和静态文件域名都在白名单里,访问这个网站的http
请求就会自动走代理模式;
如果访问某个网站的域名没有在白名单里,就需要手动设置 全局代理模式 ;这有一个缺点就是电脑的所有的网络访问都会走代理,如果这个时候访问国内的网站,就会很慢或者是打不开。
最好的办法就是编辑shadowsocks
的.ShadowsocksX/gfwlist.js
文件。将没办法走自动代理模式的域名添加到这个文件里面。但是一个网站的在显示完全,需要访问的域名不止一个,那么手动添加就会很麻烦。那么可不可以使用程序来实现呢?
需求分析:
将网站的所有请求访问的域名分类导出;
可以导出为
.txt
的文件,也可以直接打印在控制台;
怎么将所有的网络请求导出
1.打开chrome
的开发者模式,并且将shadowsocks
设置为全局代理模式访问自动代理模式无法访问的网站;
2.在chrome的network面板,右键导出 har
文件,保存到自己想要的位置;
如下图:
程序怎么运行:
按照提示运行程序:
运行效果展示:
代码分析:
因为 har
文件的内容就是一个json
格式文件。所以就是读取文件的内容,并且将文件内容转化为json
,将所有的请求的url分类写入一个数组,最后选择方式输出;
python主要代码如下:
with open(filePath, 'r') as readObj:
harDirct = json.loads(readObj.read())
requestList = harDirct['log']['entries']
for item in requestList:
urlString = (item['request']['url'])
start = urlString.index('://')
tempStr = urlString[start + 3:]
end = tempStr.index('/')
resultStr = tempStr[:end]
# 判断是否是www开头的域名
if 'www' in resultStr:
resultStr = resultStr[4:]
if resultStr not in hostList:
hostList.append(resultStr)
if str(outputType) is '1':
with open(outputPath, 'w') as ff:
for item in hostList:
ff.write('"' + item + '",' + '\n')
else:
print '=============host start=============='
for item in hostList:
print '"' + item + '",'
print '=============host end================'
最新文章
- Compare接口
- git 分批后的数据
- javascript遍历控件(实例详解)
- 对于Oracle中分页排序查询语句执行效率的比较分析
- nyoj 540 奇怪的排序
- linux 版本家族
- ubuntu下helloworld内核模块编译
- ORACLE数据库学习之SQL性能优化详解
- UNIX环境高级编程——pthread_create的问题
- 【译】Six Open Source Dashboards to Organize Your Data
- JavaScript学习 - 基础(八) - DOM 节点 添加/删除/修改/属性值操作
- Atitit 类库冲突 解决方案
- goldengate 过滤对某张表的复制操作
- 普通web项目转maven项目
- Centos7配置samba
- PHP 大神的十大优良习惯
- 【spring cloud】spring cloud集成zipkin报错:Prometheus requires that all meters with the same name have the same set of tag keys.
- 01 Developing Successful Oracle Application
- 终于搞定在VS2010中将CString转换为const char*
- javascript刷新父页面方法总结
热门文章
- [leetcode]256. Paint House粉刷房子(三色可选)
- Zabbix安装部署(CentOS系统下)
- Sass入门及知识点整理
- 微擎开发------day04
- JavaSE基础知识(5)—面向对象(5.2类的成员)
- React-router4 第七篇 Recursive Paths 递归路径
- python基础之Day9
- 分布式协议学习笔记(三) Raft 选举自编写代码练习
- No write since last change (add ! to override)
- PHP字符串截取函数