为什么要搭建代理服务器
- 生产环境为了安全,不允许直连. 通过跳板机或者安全管理平台
- 服务器没有外网访问权限
- 开发者要提高自己的工作效率
- 提高下载速度
- 抓包 debug 找故障(fiddler)
- 安全
代理协议(方式)有哪些
- http
- https
- sock4
- sock5
- ssh
搭建代理服务器
window server
WProxy
官网下载地址:http://www.imfirewall.us/trial/WProxy3.0_20160615.exe
Fiddler
- 官网地址(非下载地址-有cookie):https://www.telerik.com/fiddler
- 说明: 利用代理去抓包,然后分析 web开发进阶必备 默认端口8888 可以拦截报文进行修改再发送
Linux
shadowsocks
- Github地址: https://github.com/shadowsocks/shadowsocks/tree/master
- python
- A fast tunnel proxy that helps you bypass firewalls.
- 特点: TCP && UDP SOCK 协议支持 安装简单
- 偶尔需要ssh 上去再次开启
goproxy
- Github地址: https://github.com/snail007/goproxy
- golang
- Proxy是golang实现的高性能http,https,websocket,tcp,防污染DNS,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,域名黑白名单,跨平台,KCP协议支持,集成外部API。
- 一般多用于临时使用 可以用于多级代理 没有长久作为稳定代理服务器使用
跨平台
agent2.jar
- 下载地址
- java
- 功能异常简单
System.out.println("usage: java com.hfvast.App 监听端口 服务端IP 服务端端口");
- create by gaoleith
以上是经常使用的proxy server软件
使用代理配置
window
shadowsocks-windows
- Github地址: https://github.com/shadowsocks/shadowsocks-windows
- C#
- 中文文档: https://github.com/shadowsocks/shadowsocks-windows/wiki/Shadowsocks-Windows-%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E
IE浏览器
- 打开IE浏览器
- 工具 -> Internet选项 -> 连接 -> 局域网设置
- 勾选 为LAN 使用代理服务器 填写 ip port
- 勾选 跳过本地地址的代理服务器
- 确定 保存
crt
- Options -> Global Options -> Firewall -> add
- 选择合适的 协议以及认证方式 填写表单
- 点击OK 保存
- 在需要走代理的连接 右键选择 Properties
- Connection -> SSH2 -> 右侧Firewall下拉框 选择刚才填写好的firewall
- 点击OK 保存
- 双击连接开始连接
FileZilla
- 编辑 -> 设置 -> 连接 -> 通用代理
- 选择合适的协议 填写表单
- 点击左下角确定 生效
- 选择连接进行连接
注意: FileZilla 是所有连接共用同一个代理配置 crt 可以有多条配置灵活使用
linux
linux全局配置
vi /etc/profile
## 添加以下行
export http_proxy=http://username:password@ip:port
export https_proxy=https://username:password@ip:port
## 如果没有账号密码认证
export http_proxy=http://ip:port
export https_proxy=https://ip:port
## 使配置生效
source /etc/profile
yum源代理
vi /etc/yum.conf
## 添加以下行
proxy=http://ip:port
## 如果需要认证连接则追加以下内容
proxy_username=username
proxy_password=password
## 测试
yum clean all
yum list
ssh隧道
ssh隧道也叫端口转发
- 本地转发
- 远程端口转发
eg
- 说明: 服务器ip A(内网IP) 中转服务器 B 笔记本 C
- 限制: C可以直接访问B,C不能直接访问A,B不能直接A,A可以主动访问B
- 目的: C要访问A的端口8080
## 在服务器A 上执行以下命令 ssh -p 10003 -g -R 9999:localhost:8080 username@IPB ## 现在,C去访问B的9999端口就等于访问A 的8080端口了 ## 参数说明: # -p 10003 指定 服务器A 连接 服务器B ssh的端口号 10003 # -R 远程端口转发 # 9999:localhost:8080 指定服务器B 监听自己的 9999端口 将流量转发到 服务器A的8080端口 这里的localhost 是指服务器A # username@IPB username:服务器A ssh访问服务器B 的用户名 IPB 服务器B 的ip
其实 这就是内网穿透
- 动态端口转发
多平台适用
git
# 设置ss
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
# 设置代理
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
curl
curl www.baidu.com
curl -x 127.0.0.1:1080 www.baidu.com
wget
wget https://github.com/shadowsocks/shadowsocks-windows/releases/download/4.0.10/Shadowsocks-4.0.10.zip
wget -e "https_proxy=http://127.0.0.1:1080" https://github.com/shadowsocks/shadowsocks-windows/releases/download/4.0.10/Shadowsocks-4.0.10.zip
Maven
JAVA
// 未使用代理创建连接
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
// 使用代理
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(Common.HOST, Common.POST));
HttpURLConnection conn = (HttpURLConnection)url.openConnection(proxy);
JAVA-SOCKET
java -DsocksProxyHost=localhost -DsocksProxyPort=1080 -jar jenkins.war
使用sock代理加快jenkins初始化时下载plugin.
其他
其他软件 例如: QQ WeChat 网易云音乐 DataGrip TIM IDEA 基本都支持 http 或 sock 代理支持 找到配置的地方 进行合适的配置