上周有位做电商的朋友来问:他手里有个查价格的脚本,跑出来的结果全是同一个城市的报价,想换成成都的看看差别。他先在系统网络设置里把整台机器的代理填上,结果本地开发环境连不上数据库,聊天软件也掉线,折腾了半小时又全部还原。最后只给那个脚本单独配了代理端口,两分钟搞定。
这事其实不复杂。让软件走代理IP,说穿了就两条路:要么把整台机器的流量都指过去,要么只挑你想走的那个程序。选哪条,取决于你要解决什么问题——是临时看一眼,还是长期跑任务。
先弄清你的程序到底“听不听”系统代理
很多人第一步就栽在这里:在系统设置里填好代理,发现有的软件立刻生效,有的完全没反应。原因很简单——系统代理本质上只是一个“建议”,程序愿不愿意读,全看开发者写没写。
浏览器、大部分下载工具、系统更新,通常都会读这个设置;而很多命令行工具、自己写的脚本、部分桌面客户端,压根不看你设了什么,它只管往外发包。所以你会看到“浏览器走了代理,脚本还是本地出口”这种诡异现象。
判断办法很土但有效:把系统代理关掉,直接在程序里看有没有“网络/代理/连接”这一项设置。有,它就是自己能管的;没有,就得靠外面的手段。
按进程分流:三套常用做法,按手上工具挑
第一种,软件自带代理开关。这是最省事的。浏览器、下载器、大多数采集框架都支持直接填一个代理地址和端口,支持 HTTP 或者 SOCKS5。填完只对这个软件生效,其他程序完全无感。
第二种,用环境变量管住一个终端窗口。在 macOS 和 Linux 上特别顺手,Windows 的 PowerShell 也能用。开一个专门的窗口,把变量设好,这个窗口里跑的所有东西都走代理,关掉窗口就恢复干净环境。
# 只对当前这个终端窗口生效,其他软件照旧
export ALL_PROXY="socks5://用户名:密码@127.0.0.1:10808"
export HTTP_PROXY="$ALL_PROXY"
export HTTPS_PROXY="$ALL_PROXY"
# 另开一个窗口就是干净环境,关掉窗口即失效
写脚本的话,也可以只对单次请求指定,不影响全局:
import requests
proxies = {
"http": "socks5://用户名:密码@127.0.0.1:10808",
"https": "socks5://用户名:密码@127.0.0.1:10808",
}
r = requests.get("目标地址", proxies=proxies, timeout=15)
print(r.status_code, r.elapsed)
注意,requests 走 SOCKS5 需要额外装一下 socks 支持,否则会直接报错提示缺少依赖,这个坑很多人踩过。
第三种,进程级分流工具。手上软件实在没有代理设置,又想只让它一个走,那就得靠能把流量按程序名分出去的本地工具:给目标程序建一条规则,其余程序直连。配置的时候重点看两处——规则是按进程名匹配还是按路径匹配,以及本地端口有没有跟别的服务撞车。
全局代理省事,但代价你得提前知道
全局代理的好处是“一次搞定,全机生效”,适合临时验证、快速对比不同城市返回结果的场景。但它的麻烦也是成倍的。
最典型的是本地服务被打断。数据库连接、内网后台、局域网打印机、同事共享的目录,这些地址本来就不该往外绕,一旦全局接管,全都走不通了。表现就是“网页能开,后台打不开”,很容易误判成对方服务器挂了。
再一个是对 IP 的消耗。全局状态下,所有程序的请求都从代理出去,本来三个请求能解决的事,可能变成三十个。如果你用的是按时效计费的线路,这个成本差异会很明显。
还有个隐形问题:有些程序会自己解析域名,代理只接管了连接那一半,结果出口地址还是本地。看到“明明配了代理,查出来还是自己家宽带”的情况,多半就是这个原因,得在程序或工具里把“远程解析域名”打开。
一张表看清什么时候用哪种
| 对比项 | 按进程分流 | 全局代理 |
|---|---|---|
| 影响范围 | 只有指定软件 | 整机所有流量 |
| 配置位置 | 软件自身设置或进程规则 | 系统网络设置 |
| 本地与内网服务 | 完全不受影响 | 大概率连不上 |
| IP 消耗 | 少,只算目标程序 | 多,杂流量也计费 |
| 排错难度 | 好定位,出问题只影响一个软件 | 一处出错全断,难判断 |
| 适合场景 | 数据采集、性能压测、多账号独立出口 | 临时看一眼、快速对比结果 |
我一般的习惯是:长期跑的任务一律按进程分,临时验证才动全局,而且验证完立刻关掉,别留着过夜。
协议和线路怎么挑,别在第一步就选错
分流做好之后,出口这条线也得选对。常见几种协议里,SOCKS5 是通用性最好的一个,走应用层,能直接填进大多数软件的代理框里,用户名密码认证也方便;IKEv2、L2TP、SSTP、PPTP 更偏向整机接入的方式,适合全局场景。神龙IP 这几种都支持,数据传输全程加密,具体用哪条,看你手上软件支持什么,能选 SOCKS5 就优先用 SOCKS5。
线路方面,看两个数字就够了:城市能不能精准定位,响应快不快。神龙IP 覆盖 200+ 城市,IP 池 1000万+ 纯净IP,响应能压到 30ms 左右,带宽 6-15M 可定制,机房是自营的,跑长任务时稳定性比较有保障。
套餐挑两个说说。动态高级,6Mbps 峰值、日更 200 万+ IP、时效 2-360 小时可调,适合需要按城市不断获取新 IP 的场景,比如各地搜索排名测试、数据采集时的 IP 轮换。静态高级,给的是长期固定 IP,运营商合作资源,6Mbps,适合要长期保持同一个出口的活儿——自媒体多账号做 IP 独立防关联、后台白名单绑定这类,最忌讳出口乱跳,用这个更稳。
配置时还有几个小细节值得记一下。端口别填错,HTTP 和 SOCKS5 的端口号往往不是同一个;认证信息里的密码有特殊字符时,注意转义或者用引号包住;超时时间设短一点,15 秒足够,卡住了能早点发现问题;跑完记得验证出口,随便发一次查询 IP 的请求,看返回的地址是不是你预期的那座城市——这一步能省掉后面一大半的扯皮。
常见问题
Q:软件里根本没有代理设置的入口,怎么办?
两条路。一是用能按进程名分流的本地工具,给它建一条规则;二是把程序放进虚拟机或容器,让那个环境整体走代理。相对麻烦点,但隔离性最好,程序之间互不影响。
Q:系统代理填好了,浏览器生效,其他软件没反应?
正常,说明这些软件不读系统设置。别继续在系统设置里折腾,直接去软件内部找代理项,或者退回按进程分流的方案。
Q:全局代理开着,网页正常但后台管理系统打不开?
典型的内网地址被一起接管了。把本地和内网地址加进例外列表,或者干脆改回按进程分流,只让需要的那几个程序走代理。
Q:按城市获取的 IP 老是变,会影响任务吗?
看用途。采集和排名测试本来就需要换,变了反而好;但如果是登录类、需要保持同一出口的操作,就该换成长期固定 IP 的方案,把时效设置在合理范围内,别让它跑着跑着自己变了。




