前言

作为程序员平时主要是使用 shadowsocks 作为代理工具的。shadowsocks 有个很明显的优点儿就是可以设置白名单和黑名单。白名单是会走shadowsocks的自动代理模式。

遇到的问题:

shadowsocks 代理是分白名单和黑名单的。当我访问某个网站,而恰好这个网站的域名和静态文件域名都在白名单里,访问这个网站的http请求就会自动走代理模式;

如果访问某个网站的域名没有在白名单里,就需要手动设置 全局代理模式 ;这有一个缺点就是电脑的所有的网络访问都会走代理,如果这个时候访问国内的网站,就会很慢或者是打不开。

最好的办法就是编辑shadowsocks.ShadowsocksX/gfwlist.js文件。将没办法走自动代理模式的域名添加到这个文件里面。但是一个网站的在显示完全,需要访问的域名不止一个,那么手动添加就会很麻烦。那么可不可以使用程序来实现呢?

需求分析:

  1. 将网站的所有请求访问的域名分类导出;

  2. 可以导出为.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 文件将域名分类导出的更多相关文章

  1. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  2. Python解析excel文件并存入sqlite数据库

    最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...

  3. python解析ini文件

    python解析ini文件 使用configparser - Configuration file parser sections() add_section(section) has_section ...

  4. Python解析HDF文件 分类: Python 2015-06-25 00:16 743人阅读 评论(0) 收藏

    前段时间因为一个业务的需求需要解析一个HDF格式的文件.在这之前也不知道到底什么是HDF文件.百度百科的解释如下: HDF是用于存储和分发科学数据的一种自我描述.多对象文件格式.HDF是由美国国家超级 ...

  5. 如何用python解析mysqldump文件

    一.前言 最近在做离线数据导入HBase项目,涉及将存储在Mysql中的历史数据通过bulkload的方式导入HBase.由于源数据已经不在DB中,而是以文件形式存储在机器磁盘,此文件是mysqldu ...

  6. python 解析xml 文件: Element Tree 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  7. python 解析xml 文件: DOM 方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  8. python 解析xml 文件: SAX方式

    环境 python:3.4.4 准备xml文件 首先新建一个xml文件,countries.xml.内容是在python官网上看到的. <?xml version="1.0" ...

  9. 遍历文件 创建XML对象 方法 python解析XML文件 提取坐标计存入文件

    XML文件??? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 里面的标签都是可以随心所欲的按照他的命名规则来定义的,文件名为roi.xm ...

随机推荐

  1. 信号基础知识---单频矩形脉冲信号CW

    %CW%参考:声呐技术 P27,31clc;close all;clear all;%参数-------------------------f0=50;T=0.1;%时宽B=1/T;fs=1000;% ...

  2. Django的rest_framework的视图之基于通用类编写视图源码解析

    我们上一篇博客讲解了如何使用mixins类实现rest_framework的视图,但是其中有很多的冗余的代码,我们这边在来优化一下 1.queryset的视图函数 首先看下对queryset操作的视图 ...

  3. ME5xN(x:1-2): custom column is editable in Subscreen Item but not in ALV grid

    FM MEMFS_BUILD_MAPPING_PO_VIEWS->LMEMFSF0Z enhancement 14 zenhance_alvg_rid_editable. "activ ...

  4. [leetcode]47. Permutations全排列(给定序列有重复元素)

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  5. js的事件委托机制

    如今的JavaScript技术界里最火热的一项技术应该是‘事件委托(event delegation)’了.使用事件委托技术能让你避免对特定的每个节点添加事件监听器:相反,事件监听器是被添加到它们的父 ...

  6. 【ZooKeeper】ZooKeeper安装及简单操作

    ZooKeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一 ...

  7. 别人的Linux私房菜(10)vim程序编辑器

    很多软件的编辑接口会主动调用vi vi分一般命令模式.编辑模式.命令行模式. 使用vi :/bin/vi welcome.txt 下下端显示文本有多少行,多少字符, 一般命令模式: 上下左右移动光标k ...

  8. 小白的CTF学习之路1——程序与CPU

    刚刚注册了这个博客园,尽量保持每日一更(*/ω\*) 今天看了po学院的教学视频,了解了程序是什么,如何在CPU当中工作的等各种之前未曾想过的问题,特此记录,以防忘记 首先我们学习程序与CPU之前需要 ...

  9. Centos7通过yum安装最新MySQL

    一:去官网查看最新安装包 https://dev.mysql.com/downloads/repo/yum/ 二:下载MySQL源安装包 wget http://dev.mysql.com/get/m ...

  10. Python开发——7.迭代器、生成器和装饰器

    一.迭代器 1.迭代器协议 (1)迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么引起一个StopIteration移除异常以中止迭代. (2)可迭代对象:实现了迭 ...