Linux 环境下有什么工具可以不改变应用程序代码的前提下把其中 requests 请求的流量重定向到 sock5 代理

13 天前
 mahogany

需求 1 、我想通过 api 访问 openai 服务,开发环境在本地。 2 、我想无痛代理流量,并不想修改代码,所以应该涉及 dns 解析和类似 tun 代理的方式配合。

先前的实践 1 、使用过 socat 代理到 sock5 ,但这个需要修改 api_base ,后面 ssl 握手总有问题。

大家有什么工具推荐吗?感觉这个应该是比较普遍的需求?

2378 次点击
所在节点    Linux
32 条回复
license
13 天前
dae
jiucaijiucai
13 天前
@jiucaijiucai #15 如果需要绕过代理访问本地局域网的其他主机,可以在末尾添加如下 4 行:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -s 172.16.1.1/255.255.255.0 -j MASQUERADE
ip netns exec proxy ip route add 192.168.1.0/24 via 172.16.1.1 dev eth0
ip netns exec proxy ip route add 10.0.0.0/24 via 172.16.1.1 dev eth0

这将强制 192.168.1.0/24 和 10.0.0.0/24 网段不走代理
jiucaijiucai
13 天前
@jiucaijiucai #22 加上这 4 行后就可以使用局域网其他主机的 socks 代理,比如把 socks5://172.16.1.1:7890 替换为 socks5://192.168.1.3:7890:

ip netns exec proxy nohup tun2socks -device tun0 -proxy socks5://192.168.1.3:7890 -interface eth0 > /var/log/proxy-tun2socks.log &
kobe718
13 天前
1)proxychain
2)iptables+tproxy
3)旁路由
4)gptapi.us
任选其一即可
tofuliang
13 天前
NikoXu
13 天前
iptables + redsocks
tofuliang
13 天前
mailndk
13 天前
哪有那么麻烦啊,你都明确访问 openai 了,你把 openai route 到 tun 啊,tun 再走 socks 。
sm1314
13 天前
路由+tun2socks
SenLief
13 天前
requests 支持系统代理的,直接配置 http_proxy, https_proxy, all_proxy 即可。
https://docs.python-requests.org/en/latest/user/advanced/#proxies
mahogany
13 天前
谢谢各位。

我最终采用 SNIProxy 的方案。

我把我的解决方案粘贴一下:
`
基于 gost 的 SNIProxy 方案
时间:2024-06-18 15:28:56

1 、curl -LO https://github.com/go-gost/gost/releases/download/v3.0.0-rc8/gost_3.0.0-rc8_linux_amd64.tar.gz
tar zxvf gost*.tar.gz

2 、启动
sudo ./gost -L sni://:80 -L sni://:443 -F socks5://127.0.0.1:1081
curl -H 'Host: www.google.com' 127.0.0.1 成功。

3 、设置/etc/hosts
127.0.0.1 generativelanguage.googleapis.com

4 、清理 dns 缓存
sudo systemctl restart systemd-resolved
sudo service nscd restart
sudo service dnsmasq restart

5 、重跑应用程序。
成功。

总结:
1 、流量路径:
应用程序请求 generativelanguage.googleapis.com -> 本地 dns 解析到 127.0.0.1 -> gost sni 代理 -> 本地 v2ray socks5 代理 -> balabala... ->(远程 DNS 解析)
2 、效果:
应用程序不用做任何改动,同时能够细粒度地控制需要走 proxy 的域名。

参考:
1 、https://gost.run/concepts/proxy/
2 、https://gost.run/tutorials/protocols/sni/
3 、https://wener.me/story/sni-proxy#%E8%83%BD%E4%B8%8D%E8%83%BD%E4%B8%8D%E9%99%90%E5%88%B6%E5%9F%9F%E5%90%8D%E6%89%80%E6%9C%89%E9%83%BD%E4%BB%A3%E7%90%86
`

=========================================

gost 这个工具没细究,看起来有点 v2ray 的味道。
nmap
11 天前
http_proxy
https_proxy
最简单的办法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050437

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX