今天码哥带来的是用Python代码设置各个平台下socks5代理配置的方法。
由于网上各平台设置的文章较为分散,且有个别平台设置时存在一些坑,因此码哥决定写一篇汇总文章便于他人参考。
声明:本文不是讲解socks5代理服务实现的,而仅是展示在Windows、Linux、OSX下如何使用代码设置socks5配置。
有时,一些桌面程序可能需要用到代理配置功能,例如企业内部一些工具软件访问公司内部资源,此时需要将本机该软件的流量打到公司指定内部服务上。
很显然,我们日常使用桌面系统时,是可以手工设置代理配置的。但是如果一款软件还需要用户手工去设置,就会增加使用者的学习难度,降低软件的用户体验,因此开发者会有需求知道如何用代码来修改设置。
本文仅以Python为例进行讲解,由于Python库的实现特点,其库函数接口与C版本接口原型几乎保持了一致,因此也有助于C/C++开发人员来借鉴。
下面我们逐个平台给出示例。由于设置代理的方式有很多种,码哥没有逐个试过一遍,因此仅给出尝试过的可行方案:
OSX(Mac)
import os
#打开代理
os.popen('networksetup -setsocksfirewallproxy "Wi-Fi" SOCKS5_PROXY_IP SOCKS5_PROXY_PORT').close()
#关闭代理
os.popen('networksetup -setsocksfirewallproxystate "Wi-Fi" off').close()
其中,SOCKS5_PROXY_IP
是代理的IP地址,SOCKS5_PROXY_PORT
是代理的端口。
Mac上实际上是通过命令行方式进行设置的,OSX中有一个名为networksetup
的工具可以用来设置代理。
Linux
import os
#打开代理
os.popen('gsettings set org.gnome.system.proxy mode "manual"').close()
os.popen('gsettings set org.gnome.system.proxy.socks host "SOCKS5_PROXY_IP"').close()
os.popen('gsettings set org.gnome.system.proxy.socks port SOCKS5_PROXY_PORT'.format(conf.LISTENPORT)).close()
os.popen('gsettings set org.gnome.system.proxy ignore-hosts "IGNORED_IPs"'.format(ignore))