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

187 天前
 mahogany

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

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

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

3063 次点击
所在节点    Linux
32 条回复
tradzero
187 天前
proxifier
matianhe
187 天前
proxychains
mohumohu
187 天前
sniproxy 代理加 socks5 ,hosts 写 127.0.0.1 ,最无痛的方式。
thomaspaine
187 天前
配置 iptables ,设置 tproxy
zkl2333
187 天前
我还以为 Linux 配个环境变量就好了
ysc3839
187 天前
proxychains
zengxs
187 天前
如果你是用的 python 的话,装个 socks 代理库,然后设置环境变量就行了

requests 安装 pysocks
httpx (openai 库用的 http client) 安装 socksio

然后设置环境变量 HTTPS_PROXY=socks5://user:pass@host:port

参考 https://www.python-httpx.org/advanced/proxies/
infun
187 天前
如果你是用的 Python 的话,假设本地已经有 http/socks5://127.0.0.1:7890 代理


import os
os.environ['HTTP_PROXY'] = 'http://127.0.0.1:7890'
os.environ['HTTPS_PROXY'] = 'http://127.0.0.1:7890'
Latin
187 天前
infun
187 天前
@infun 看错了。。。。不要修改代码,忽略
github2020
187 天前
greenskinmonster
187 天前
cgproxy -> 本机 v2ray tproxy -> socks5
body007
187 天前
我编写了监听 443 端口的程序,按照 https 解析 tls 的 hello 数据包,提取 SNI 里面的目标域名,然后进行转发。因此我只需要在 host 文件里面添加域名解析到我的服务就行,如下所示,此时系统任何程序访问 https://域名 时都会连接 127.0.0.1:443 我这个服务,我的服务代理转发这些请求,因此不需要修改任何客户端逻辑。



相关实现参考: https://www.agwa.name/blog/post/writing_an_sni_proxy_in_go

当然这个方案只针对 tls 连接,其他流量需要自己编写相关代码。
docxs
187 天前
用这个 直接 gg cmd
https://github.com/mzz2017/gg
jiucaijiucai
187 天前
用 linux 的网络命名空间功能 + https://github.com/xjasonlyu/tun2socks + https://github.com/netblue30/firejail 可以实现:


如果你的 socks 代理端口是本机的 7890 (注意必须是本机的),在本机上执行如下脚本 (这个脚本依赖 tun2socks):

#!/bin/bash

mkdir -p /etc/netns/proxy/
echo nameserver 8.8.8.8 > /etc/netns/proxy/resolv.conf

ip netns add proxy
ip netns exec proxy ip link set lo up

ip link add veth0 type veth peer name eth0 netns proxy
ip addr add 172.16.1.1/24 dev veth0
ip link set veth0 up

ip netns exec proxy ip addr add 172.16.1.2/24 dev eth0
ip netns exec proxy ip link set eth0 up
ip netns exec proxy ip route add default via 172.16.1.1 dev eth0 metric 10

ip netns exec proxy ip tuntap add mode tun dev tun0
ip netns exec proxy ip addr add 198.18.0.1/15 dev tun0
ip netns exec proxy ip link set tun0 up
ip netns exec proxy ip route add default via 198.18.0.1 dev tun0 metric 1

ip netns exec proxy nohup tun2socks -device tun0 -proxy socks5://172.16.1.1:7890 -interface eth0 > /var/log/proxy-tun2socks.log &


然后使用 firejail 来执行应用程序,以下以 vscode 为例:

firejail --noprofile --netns=proxy --quiet code

我平常跑 vscode 和 jetbrains 全家桶都是用这种方式跑的。
ETiV
187 天前
https://tsocks.sourceforge.net/about.php

配置文件写好,然后 tsocks python ./main.py 就行
wuzhewuyou
187 天前
直接搞个 openwrt 的旁路由吧,网关直接指向旁路由就好
wktadmin
187 天前
运行前修改环境变量即可
export HTTP_PROXY=...
export HTTPS_PROXY=...
zltningx
187 天前
这个我做过,利用 LD_PRELOADHook C 函数实现流量劫持到代理
具体见: https://github.com/Intika-Linux-Proxy/Proxybound
yolee599
187 天前
vim ~/.bashrc

然后添加以下内容:
# set/unset clash proxy
alias setproxy='export http_proxy=127.0.0.1:7890; export https_proxy=127.0.0.1:7890; export socks_proxy=127.0.0.1:7891'
alias delproxy='unset http_proxy; unset https_proxy;unset socks_proxy'

再执行一下:
source ~/.bashrc

打开终端默认不使用代理,需要使用的时候就执行一下 setproxy ,不需要使用的时候 delproxy 。方便得很

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

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

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

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

© 2021 V2EX