在 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 请求过滤相关推荐

  1. chromefirefoxSafari使用PAC文件总结

    chrome.firefox.Safari使用PAC文件总结 因为某些原因,在工作中需要使用pac完成浏览器代理,以更好的提高我们的工作效率,下面是自己使用的一点心得,记录下来,方便自己以后查阅和参考 ...

  2. Wireshark抓取的数据包文件提取

    (第一种方法 直接使用wireshark自带的导出) 分离图片文件) wireshark在指定的数据流中提取文件很简单.先选中要提取文件的数据包.wrieshark都会标明文件的类型.所以我们也就能够 ...

  3. 紫光展锐展讯SPRD刷机包pac文件解包提取img步骤

    UNISOC_SPRD_PAC_UNPAC 紫光展锐展讯SPRD刷机包pac文件解包提取img文件. Extract Images from .pac file from Spreadtrum Uni ...

  4. 深度学习和目标检测系列教程 8-300:目标检测常见的标注工具LabelImg和将xml文件提取图像信息

    @Author:Runsen 图像标注主要用于创建数据集进行图片的标注.本篇博客将推荐一款非常实用的图片标注工具LabelImg,重点介绍其安装使用过程.如果想简单点,请直接下载打包版(下载地址见结尾 ...

  5. 手机文件管理ftp服务器,ftp工具手机版(ftp文件传输管理工具)V1.0.2 手机版

    ftp工具手机版(ftp文件传输管理工具)是一款非常实用的ftp文件管理应用工具.主要作用是将手机ftp上的文件数据快速传输到电脑上,或者将电脑上的文件传输到手机上,实现双向传输,并且传输速度十分快, ...

  6. Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片

    文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...

  7. 通过一个最简单的HTTP服务器工具软件(如http文件服务器-hfs2),建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载你的计算机中指定的文件

    通过一个最简单的HTTP服务器工具软件(如http文件服务器-hfs2),建立一个临时的HTTP文件服务,使能通过手机浏览器等访问下载你的计算机中指定的文件 1.先到网上下载http文件服务器-hfs ...

  8. Excel 从多个文件提取指定的多行(固定行)进行汇总的工具

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.工具位置 二.使用步骤 总结 前言 Excel 如果从多个文件提取指定的行汇总到一个文件?在办公过程中我们往往需要 ...

  9. Wallpaper Engine pkg壁纸文件提取工具

    简介: RePKG-GUI 基于RePKG开发,适用于Wallpaper Engine壁纸的用户,可以帮助用户轻松下载Wallpaper Engine中的壁纸图片,让用户可以获取到自己喜欢的壁纸,软件 ...

最新文章

  1. 机器学习入门:线性回归及梯度下降
  2. 使用微信云托管快速部署一个.Net Core项目(一)
  3. php foreach 收邮件_php机制本身不提供多线程的操作,有了swoole就不一样了
  4. python课程ppt_Python电子教学课件12程序设计基本方法.ppt
  5. 开发申请评分卡的第一步要做什么
  6. 关押罪犯 扩展域并查集
  7. 软件测试达内视频笔记(二)
  8. mysql sp print_mysql 存储过程 print
  9. 删除链表的节点(JS)
  10. Mac外接显示器默认30hz
  11. 国庆节期间创作博文,获得国庆专属勋章。国庆节快乐!!!
  12. 【机器学习】吴恩达机器学习个人笔记
  13. UltraEdit mac版
  14. dubbo、dubbox坑集合
  15. 足球数据API接口 - 【足球赛事分析数据】API调用示例代码
  16. RIP路由环问题处理
  17. java快速入门知识整理:9、java数据类型:布尔型(boolean)
  18. OPPO救砖通用:oppo A33T(移动定制版)黑砖救砖
  19. (一)关于手眼标定理论相关的笔记
  20. HDU1244--Max Sum Plus Plus Plus

热门文章

  1. Swift - 加速传感器(CoreMotion)的用法,小球加速运动并反弹样例
  2. Spring-实现整合Mybatis框架
  3. 电子显微镜数据格式MRC
  4. 关于软文营销,你真的了解它吗?
  5. 真空衰变对事件概率的影响
  6. 初学C++之——do while循环语句
  7. 14年高考结束了,明日边缘看完了,明天周一了 (2014-06-08)
  8. (Pytorch)环境配置与代码学习1—边缘检测:更丰富的卷积特征 Richer Convolutional Features for Edge Detection
  9. lterator的初体验
  10. C语言指针知识点小结