1. 程式人生 > 實用技巧 ># 2021-01-11 #「Polipo」- 將 SOCKS 轉換為 HTTP(S) 代理

# 2021-01-11 #「Polipo」- 將 SOCKS 轉換為 HTTP(S) 代理

問題描述

現在我們有 SOCKS 代理伺服器,但是由於部分軟體功能限制,我們需要使用 HTTP(S) 代理服務。

該筆記將記錄:將 SOCKS 代理服務 轉化為 HTTP(S) 代理服務 的方法。

解決方案

使用 Polipo 軟體。

服務搭建

系統版本:Debian GNU/Linux 10

第一步、安裝服務

apt-get install polipo

第二步、修改配置

cp /etc/polipo/config /etc/polipo/config.backup

cat > /etc/polipo/config <<EOF
# 日誌等級
logSyslog = false
logFile = /var/log/polipo/polipo.log
logLevel=255

# 上游代理服務
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5

# 監聽服務地址及埠
proxyAddress = "::0"        # both IPv4 and IPv6
# proxyAddress = "0.0.0.0" # or IPv4 only
proxyPort = 8123
EOF

有關日誌等級設定,可以參考 http proxy - Make polipo to log all urls - Unix & Linux Stack Exchange 問題

第三步、啟動服務

systemctl start polipo
systemctl enable polipo

第四步、代理驗證

# 此命令將返回代理 IP 地址
curl --proxy http://127.0.0.1:8123 http://bot.whatismyipaddress.com/

# 測試 Google 訪問
curl --proxy http://127.0.0.1:8123 https://www.google.com

相關連結

The Polipo Manual

常見問題彙總

Couldn't create disk file ... Permission denied

問題描述:
在啟動 Polipo 服務之後,使用期間產生如下錯誤:

Couldn't create disk file /var/cache/polipo/repo.zabbix.com/hI-bv4EBKjxz41aA4cXXMQ==: Permission denied

問題原因:
通常不會遇到這個問題。在我們的場景中,當初為了測試,直接使用 ROOT 使用者啟動 Polipo 並測試,測試過程中已經建立 repo.zabbix.com 目錄,但是屬於 ROOT 使用者。隨後我們使用 systemd 管理服務,但是使用 proxy 使用者,導致無法向 repo.zabbix.com/ 中寫入。

解決方法:

Couldn't create disk file /var/cache/polipo/repo.zabbix.com/hI-bv4EBKjxz41aA4cXXMQ==: Permission denied

參考文獻