日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pac文件提取服务器,[工具使用] privoxy 实现 PAC 请求过滤

發布時間:2024/3/12 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 请求过滤的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。