Python 解析har 文件将域名分类导出
前言
作为程序员平时主要是使用 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================'

Python 解析har 文件将域名分类导出的更多相关文章
- Python解析Wav文件并绘制波形的方法
资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...
- Python解析excel文件并存入sqlite数据库
最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...
- python解析ini文件
python解析ini文件 使用configparser - Configuration file parser sections() add_section(section) has_section ...
- Python解析HDF文件 分类: Python 2015-06-25 00:16 743人阅读 评论(0) 收藏
前段时间因为一个业务的需求需要解析一个HDF格式的文件.在这之前也不知道到底什么是HDF文件.百度百科的解释如下: HDF是用于存储和分发科学数据的一种自我描述.多对象文件格式.HDF是由美国国家超级 ...
- 如何用python解析mysqldump文件
一.前言 最近在做离线数据导入HBase项目,涉及将存储在Mysql中的历史数据通过bulkload的方式导入HBase.由于源数据已经不在DB中,而是以文件形式存储在机器磁盘,此文件是mysqldu ...
- python 解析xml 文件: Element Tree 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- python 解析xml 文件: DOM 方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- python 解析xml 文件: SAX方式
环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...
- 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件
XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...
随机推荐
- xmlhttprequest 1.0和2.0的区别,from qq前端哥
阮一峰好文:http://www.ruanyifeng.com/blog/2012/09/xmlhttprequest_level_2.html
- 547. Friend Circles 求间接朋友形成的朋友圈数量
[抄题]: There are N students in a class. Some of them are friends, while some are not. Their friendshi ...
- javascript 新建实例对象
在main js里面new 这样一个实例算怎么回事,如果不这么new, ToolBar里就会报错: Portal.gbl = { constants : new Portal.common.Const ...
- vnc 搭建 转
这里要注意,关闭selinux setenforce 0 原文地址: http://www.linuxidc.com/Linux/2015-04/116725.htm 这是一个关于怎样在你的 Cent ...
- PostFix添加多个端口
/usr/local/*/config/postfix/master.cf 在/etc/services中搜索smtp,复制,添加smtp2<与上面一步对应起来的服务名>,后面为需要添加的 ...
- JAVA 8 主要新特性 ----------------(一)总纲
一.版本中数据结构的修改浅析 二.JDK1.8优点概括 三.新功能Lambda表达式入门 四.Lambda函数式接口 五.Lambda方法引用与构造器引用 六.集合Stream API 七.新时间日期 ...
- 关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
poi导出excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产生内存溢出问题,SXSSFWorkbook是一种大数据量导出格式,csv是另一种excel导出的一种轻快的 ...
- 使用百度地图实现详细地址自动补全(补全bug''事件只能绑定到一个上的问题')
function G(id) { return document.getElementById(id); } loadMapAutocomplete("suggestId",&qu ...
- IntelliJ IDEA 2018.1.3 破解方法之一
IntelliJ IDEA 2018.1.3 破解方法之一 声明:如果资金充足请购买正版! NO1 下载安装IntelliJ IDEA 企业版 NO2 下载jar包 (1)下载地址:http://id ...
- [ZJOI2019]语言
树链剖分入门题吧 一个非常直观的想法是使用树剖将一条链拆成\(log^2n\)个矩形,套用矩形面积并算法即可得到一个垃圾的3个log过不去算法 为了得到一个两个log的做法,我们观察一下拆出来的矩形的 ...