pac文件提取服务器,[工具使用] privoxy 实现 PAC 请求过滤
在 ubuntu 下使用 ss 下是不能够使用 PAC 文件进行过滤的。所有的网络请求都会通过 ss 转向服务器,导致有些不必要的网站访问速度过慢。
对于这个问题官方也不想解决,自行查看 github.com 的 issue 717。
为了处理这个问题,现在使用 privoxy 搭配 ss 实现 PAC 文件所实现的功能。
虽然网络上有一些更优雅的方式解决,但是本人未实验成功。我最先使用这个笨方式成功了,能用了,所以我不再尝试其他方式。此处的记录仅为了以后我需要配置时能迅速配置。
整个思路是将所有请求专项 privoxy,由 privoxy 将那些需要转向 ss 的网络请求转向 ss,不需要的网络请求直接发出。
1. 安装 privoxy
自行查找如何安装 privoxy 。
2. 安装 sslocal
sudo apt-get update && sudo apt-get install python-gevent python-pip -y && sudo pip install xxx
配置 config 文件 /etc/ss/config.json 。
在启动 sslocal 的时候会报错,因为这都是 python 代码,能够直接看到源码,也无需编译,所以很容易解决。搜索可以找到答案。就是把出错文件中的 libcrypto 失效的变量 EVP_CIPHER_CTX_cleanup 改成 EVP_CIPHER_CTX_reset 。
3. 获得 pac 文件
sudo pip install genpac
sudo genpac --proxy="SOCKS5 127.0.0.1:1080" -o autoproxy.pac --gfwlist-url="https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt"
生成了 autoproxy.pac 文件,打开这个文件,是可以理解的。里面是 js 代码,在文件末尾有一个函数 testHost,用于判断是否此 host 是使用 proxy 或是直连 DIRECT。proxy 就是生成 pac 文件时候的 SOCKS5 127.0.0.1:1080。
4. 为 privoxy 配置转发规则
在 /etc/privoxy/config 中搜索 listen-address 可以查到语句如下。
listen-address 127.0.0.1:8118
listen-address [::1]:8118
所以知道 privoxy 监听的端口是 8118 。
在 /etc/privoxy/config 中搜索 forward-socks4 可以查到相关的转发规则配置语法。
使用我们获得的语法,可以将 pac 文件中的所记录的域名使用 pac 文件中的testHost函数配置成 privoxy 的转发规则。
将 pac 文件后缀改为 js,并在底部添加如下代码,将 pac 内部的转发规则输出 privoxy 转发规则至文件,随后将此文件中的内容 append 到 /etc/privoxy/config 。
var index = 1;
var str = "";
for (var i = 0; i < rules[index].length; i++){
for (var j = 0; j < rules[index][i].length; j++) {
lastRule = rules[index][i][j];
if(FindProxyForURL("", lastRule)=="DIRECT"){
str += "forward ." + lastRule + " .\n";
} else {
str += "forward-socks5 ." + lastRule + " 127.0.0.1:1080 .\n";
}
}
}
fs = require('fs');
fs.writeFile('rules', str);
127.0.0.1:1080 的 1080 是 ss 监听的端口,表示遇到这个域名将其转发到 ss 。
5. 启动
在 .bashrc 或其他 rc 文件中添加以下语句。
export http_proxy="127.0.0.1:8118"
export https_proxy="127.0.0.1:8118"
sudo /usr/local/bin/sslocal -c /etc/ss/config.json -d start
sudo service privoxy start
当打开 Terminal 的时候就会自动启动 privoxy 与 sslocal 。当然,我希望能够在系统 boot up 过程中自动完成以上操作,但是失败了,sslocal 无法正常开启。
以上就可以在 shell 中使用 privoxy 与 sslocal 的转发。
在 Setting-Network 中配置 NetProxy 为 Manual,并设置 4 条规则都为 127.0.0.1:8118。这一步实现全局的网络请求转发配置,即在浏览器中可以用以上 privoxy 与 sslocal 的转发服务。
以上在 .bashrc 文件中添加这些内容会导致打开 Terminal 都需要因为 sudo 输入密码(频率由 sudo 密码记忆时间决定),这麻烦。为了解决这个问题,可以写一个简单的 python 脚本,在 python 脚本中判断 privoxy 与 sslocal 是否启动,如果已经启动则无需再次启动。代码如下。
#!/usr/bin/python
import subprocess
import os
# export http_proxy="127.0.0.1:8118"
# export https_proxy="127.0.0.1:8118"
os.system("export http_proxy=\"127.0.0.1:8118\"")
os.system("export https_proxy=\"127.0.0.1:8118\"")
out = subprocess.check_output("ps -ef | grep sslocal", shell=True)
out_str = out.decode()
if "/usr/local/bin/sslocal" not in out_str:
os.system("sudo /usr/local/bin/sslocal -c /etc/ss/config.json -d start")
out = subprocess.check_output("ps -ef | grep privoxy", shell=True)
out_str = out.decode()
if "/usr/sbin/privoxy" not in out_str:
os.system("sudo service privoxy start")
一般在 ubuntu 下使用 ss-qt,在 Software 中搜索即可找到并安装,理论上它是可以替换 sslocal 的,在使用 ss-qt 时需要将配置中的 Local Server Type 选定为 HTTP(S),这才能正常使用 Chome(chromium) 浏览器,因为这浏览器不像 Firefox 是不可以配置 proxy 的。(仅在此记录,防止以后配置浪费时间。)
pac文件提取服务器,[工具使用] privoxy 实现 PAC 请求过滤相关推荐
- chromefirefoxSafari使用PAC文件总结
chrome.firefox.Safari使用PAC文件总结 因为某些原因,在工作中需要使用pac完成浏览器代理,以更好的提高我们的工作效率,下面是自己使用的一点心得,记录下来,方便自己以后查阅和参考 ...
- Wireshark抓取的数据包文件提取
(第一种方法 直接使用wireshark自带的导出) 分离图片文件) wireshark在指定的数据流中提取文件很简单.先选中要提取文件的数据包.wrieshark都会标明文件的类型.所以我们也就能够 ...
- 紫光展锐展讯SPRD刷机包pac文件解包提取img步骤
UNISOC_SPRD_PAC_UNPAC 紫光展锐展讯SPRD刷机包pac文件解包提取img文件. Extract Images from .pac file from Spreadtrum Uni ...
- 深度学习和目标检测系列教程 8-300:目标检测常见的标注工具LabelImg和将xml文件提取图像信息
@Author:Runsen 图像标注主要用于创建数据集进行图片的标注.本篇博客将推荐一款非常实用的图片标注工具LabelImg,重点介绍其安装使用过程.如果想简单点,请直接下载打包版(下载地址见结尾 ...
- 手机文件管理ftp服务器,ftp工具手机版(ftp文件传输管理工具)V1.0.2 手机版
ftp工具手机版(ftp文件传输管理工具)是一款非常实用的ftp文件管理应用工具.主要作用是将手机ftp上的文件数据快速传输到电脑上,或者将电脑上的文件传输到手机上,实现双向传输,并且传输速度十分快, ...
- Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片
文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...
- 通过一个最简单的HTTP服务器工具软件(如http文件服务器-hfs2),建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载你的计算机中指定的文件
通过一个最简单的HTTP服务器工具软件(如http文件服务器-hfs2),建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载你的计算机中指定的文件 1.先到网上下载http文件服务器-hfs ...
- Excel 从多个文件提取指定的多行(固定行)进行汇总的工具
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.工具位置 二.使用步骤 总结 前言 Excel 如果从多个文件提取指定的行汇总到一个文件?在办公过程中我们往往需要 ...
- Wallpaper Engine pkg壁纸文件提取工具
简介: RePKG-GUI 基于RePKG开发,适用于Wallpaper Engine壁纸的用户,可以帮助用户轻松下载Wallpaper Engine中的壁纸图片,让用户可以获取到自己喜欢的壁纸,软件 ...
最新文章
- 机器学习入门:线性回归及梯度下降
- 使用微信云托管快速部署一个.Net Core项目(一)
- php foreach 收邮件_php机制本身不提供多线程的操作,有了swoole就不一样了
- python课程ppt_Python电子教学课件12程序设计基本方法.ppt
- 开发申请评分卡的第一步要做什么
- 关押罪犯 扩展域并查集
- 软件测试达内视频笔记(二)
- mysql sp print_mysql 存储过程 print
- 删除链表的节点(JS)
- Mac外接显示器默认30hz
- 国庆节期间创作博文,获得国庆专属勋章。国庆节快乐!!!
- 【机器学习】吴恩达机器学习个人笔记
- UltraEdit mac版
- dubbo、dubbox坑集合
- 足球数据API接口 - 【足球赛事分析数据】API调用示例代码
- RIP路由环问题处理
- java快速入门知识整理:9、java数据类型:布尔型(boolean)
- OPPO救砖通用:oppo A33T(移动定制版)黑砖救砖
- (一)关于手眼标定理论相关的笔记
- HDU1244--Max Sum Plus Plus Plus