常见的设置代理
你想通过 SSH 访问一个公司内网的主机(例如 ssh iflytek -T),但由于这是内网服务,你必须通过…
SSH设置代理
你想通过 SSH 访问一个公司内网的主机(例如 ssh iflytek -T),但由于这是内网服务,你必须通过一个本地设置好的代理(端口为 10808)进行转发。
以下是你可以采用的方法,取决于你使用的代理类型(HTTP 代理 / SOCKS5 代理)。
SOCKS5 代理
你可以使用 ProxyCommand 来配置 SSH,通过代理进行连接。
方法 1:使用命令行 + nc 或 connect-proxy 工具
安装必要的工具(任选其一):
nc(带-X 5支持 SOCKS5,部分版本如netcat-openbsd支持)- 或者:
connect-proxy工具
然后运行以下命令(以 SOCKS5 为例):
ssh -o "ProxyCommand=nc -x 127.0.0.1:10808 -X 5 %h %p" github -T或者使用 connect-proxy:
ssh -o "ProxyCommand=connect-proxy -S 127.0.0.1:10808 %h %p" github -THTTP 代理
可以通过 connect-proxy 工具来实现 HTTP 代理转发:
ssh -o "ProxyCommand=connect-proxy -H 127.0.0.1:10808 %h %p" github -T修改 ~/.ssh/config
为了不每次都输入复杂参数,你可以修改 SSH 配置文件:
nano ~/.ssh/config添加以下内容:
Host github
HostName github.com
ProxyCommand nc -x 127.0.0.1:10808 -X 5 %h %p
# 或者(如果是 HTTP 代理):
# ProxyCommand connect-proxy -H 127.0.0.1:10808 %h %p然后你只需要执行:
ssh github -T适用于 Windows。
下面是几个可行且常用的工具推荐:
connect.exe(超轻量 SOCKS5/HTTP 代理转发器,开源,单文件)
如果你已经安装了 Git for Windows,那么实际上你已经拥有 connect.exe,不需要额外下载:
这个 connect.exe 位于 Git 安装目录下,例如:
C:\Program Files\Git\mingw64\bin\connect.exeGit 自带的 connect.exe 就可以直接用于 ProxyCommand 设置
Host iflytek
HostName iflytek.company.internal
ProxyCommand "C:\\Program Files\\Git\\mingw64\\bin\\connect.exe" -S 127.0.0.1:8868 %h %p如果你的代理是 SOCKS5:
Host github.com
ProxyCommand C:\Tools\connect.exe -S 127.0.0.1:8868 %h %p如果你的代理是 HTTP:
Host github.com
ProxyCommand C:\Tools\connect.exe -H 127.0.0.1:8868 %h %pHost github.com
IdentityFile C:\Users\maluyao\.ssh\github
ProxyCommand "C:/Program Files/Git/mingw64/bin/connect.exe" -S 127.0.0.1:10808 %h %pGit代理
下面配置根据需要二选一
- 设置socks5代理
git config --global http.proxy 'socks5://127.0.0.1:10808'
git config --global https.proxy 'socks5://127.0.0.1:10808'- 设置http代理
git config --global http.proxy 'http://127.0.0.1:7890'
git config --global https.proxy 'https://127.0.0.1:7890'查看代理
git config --global --get http.proxy
git config --global --get https.proxy取消代理
git config --global --unset http.proxy
git config --global --unset https.proxynpm设置代理
设置代理
#设置http代理
npm config set proxy http://proxy-server:port
#案例
npm config set proxy http://127.0.0.1:1080
#设置https代理
npm config set https-proxy https://proxy-server:port
#案例
npm config set proxy https://127.0.0.l:l080删除代理
npm config delete proxy
npm config delete https-proxy恢复官方 npm 源
npm config set registry https://registry.npmjs.org/检查配置是否恢复成功
npm config listshell
对当前 PowerShell 会话生效的代理设置
把端口按你的实际改(常见:SOCKS=10808,HTTP=7890/7891):
# 如果你是 SOCKS5 代理(常见 10808)
$env:HTTP_PROXY="socks5://127.0.0.1:10808"
$env:HTTPS_PROXY="socks5://127.0.0.1:10808"
# 补充一个 对所有协议生效(HTTP、HTTPS、FTP 等),作为兜底
$env:ALL_PROXY="socks5://127.0.0.1:10808"
flutter build apk临时添加环境变量:
$env:Path = "E:\Tools\nuget;" + $env:Path常见会读取它的工具
flutter(下载 engine / pub / gradle 依赖)gitcurlwgetnpm / yarn / pnpmpipgradle
⚠️ 前提:程序本身要支持从环境变量读取代理
CMD
CMD 中的代理设置 (临时生效) 将端口改为你的实际端口(如 10808 或 7890):
设置 HTTP 和 HTTPS 代理
set HTTP_PROXY=socks5://127.0.0.1:10808
set HTTPS_PROXY=socks5://127.0.0.1:10808
set ALL_PROXY=socks5://127.0.0.1:10808python
一、最通用:用环境变量(推荐,最省事)
✔ 适合:
requests、pip、urllib、aiohttp、httpx✔ 和你之前 PowerShell 的做法是 同一套机制
代码里设置(只对当前 Python 进程有效)
import os
os.environ["HTTP_PROXY"] = "http://127.0.0.1:7890"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:7890"
# 如果是 SOCKS5
# os.environ["HTTP_PROXY"] = "socks5h://127.0.0.1:10808"
# os.environ["HTTPS_PROXY"] = "socks5h://127.0.0.1:10808"然后 正常发请求即可:
import requests
print(requests.get("https://httpbin.org/ip").text)📌 socks5h:// 比 socks5:// 更稳(DNS 也走代理)
二、requests 单独设置代理(最常见)
import requests
proxies = {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890",
}
r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
print(r.text)SOCKS5(需要额外依赖)
pip install requests[socks]
proxies = {
"http": "socks5h://127.0.0.1:10808",
"https": "socks5h://127.0.0.1:10808",
}三、urllib / 标准库方式
import urllib.request
proxy_handler = urllib.request.ProxyHandler({
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890",
})
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)
print(urllib.request.urlopen("https://httpbin.org/ip").read())四、异步库(aiohttp / httpx)
aiohttp
import aiohttp
import asyncio
async def main():
async with aiohttp.ClientSession() as session:
async with session.get(
"https://httpbin.org/ip",
proxy="http://127.0.0.1:7890"
) as r:
print(await r.text())
asyncio.run(main())httpx(强烈推荐,现代)
import httpx
with httpx.Client(proxies="http://127.0.0.1:7890") as client:
r = client.get("https://httpbin.org/ip")
print(r.text)SOCKS5:
pip install httpx[socks]
client = httpx.Client(proxies="socks5h://127.0.0.1:10808")五、pip 自己怎么走代理?
临时
pip install numpy -i https://pypi.org/simple --proxy http://127.0.0.1:7890永久(配置文件)
# %APPDATA%\pip\pip.ini (Windows)
[global]
proxy = http://127.0.0.1:7890评论
评论加载中……