如何使用Linux设置命令行海外IP代理?
当我们在做一些海外业务时,有些场景是需要为系统设置IP代理的,比如OpenCV3在进行cmake编译时需要在线从亚马逊下载一些第三方包,现在很多人采用的代理方案都是基于socks5协议的,而默认的终端工具支持代理类型都是HTTP或HTTPS,所以这里需要socks协议到http协议的转换,转换之后采用终端的代理变量设置http代理即可。一种是采用polipo将socks代理转为http,然后为相应命令指定http代理另外一种是采用proxychains重定向链接来解决的,两种方法个人喜好。
下面我们一起来看一下两种设置IP代理方法
proxychains进行代理重定向
安装
sudo apt-get install proxychains配置
proxychains会从以下文件中加载配置:
./proxychains.conf
$(HOME)/.proxychains/proxychains.conf
/etc/proxychains.conf
# see more in /etc/proxychains.conf本文以修改$(HOME)/.proxychains/proxychains.conf为例
修改其内容如下(如果没有该文件,则创建):
trict_chain
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
localnet 127.0.0.0/255.0.0.0
quiet_mode
socks5 127.0.0.1 1081其中字段中添加你的代理,由于采用shadowsocks的方式进行代理,并且监听的本地端口为1081,所以最后一行为socks5 127.0.0.1 1081
使用
proxychains
例如:
proxychains后面直接跟需要走代理的命令
$ proxychains curl ip.gs
ProxyChains-3.1 (
http://
proxychains.sf.net
)
Current IP / 当前 IP: 165.227.118
ISP / 运营商:
http://
digitalocean.com
City / 城市: San Francisco California
Country / 国家: United States
$ proxychains git push origin master或者直接让整个bash下的命令都走代理:
$ proxychains bash
$ ping
http://
google.com
$ git push origin master
polipo转socks为http依赖
默认你使用的是SS方式进行代理上网,并且已经有了SS账号。
安装ss客户端
sudo apt-get update
sudo apt-get install python
sudo apt-get install python-pip
sudo pip install shadowsocks安装polipo
polipo是一个web代理缓存工具,可以转发web请求到指定的服务器和端口,它本身支持socks协议,所以可以把它当成可以进行socks协议与http协议转换的工具。
sudo apt-get install polipo配置
配置并启动ss客户端
为了避免系统中配置的多个ss客户端监听端口冲突,可以修改ss监听端口,这里指定监听端口为1081,下面是我的ss配置:
config.json
{
"server":"your-server-ip",
"server_port":your-server-port,
"local_port":1081,
"password":"your-password",
"method": "aes-128-cfb",
"timeout":600
}启动ss客户端:
sslocal -c config.json可以让它在后台运行,如果只是临时用,可以另开一个terminal进行其他操作
配置并启动polipo
修改polipo配置文件如下:
配置文件路径/etc/polipo/config
logSyslog = true
logFile = /var/log/polipo/polipo.log
socksParentProxy = "127.0.0.1:1081"
socksProxyType = socks5启动polipo服务:
sudo systemctl start polipo此时polipo已经开始监听本地的8123端口,并将请求通过socks5协议转发到127.0.0.1的1081端口,如果需要修改默认的8123端口,可以查看man手册
验证
在需要使用代理的命令前面加上
http_proxy=
http://
127.0.0.1:8123
https_proxy=
http://
127.0.0.1:8123
,如果只需要使用http,可以只设置http代理,如下验证代理后的ip:
http_proxy=
http://
127.0.0.1:8123
curl ip.gs
当前 IP:138.68.252.43 取自:smartproxy海外HTTP代理,IP地址来自:美国加利福尼亚州旧金山
验证google的https访问:
https_proxy=
http://
127.0.0.1:8123
curl
https://
google.com
使用技巧
如果想让整个当前会话都走代理,可以直接设置环境变量:
export http_proxy=
http://
127.0.0.1:8123
https_proxy=
http://
127.0.0.1:8123
取消代理的环境变量:
unset http_proxy
unset https_proxy
如果想让用户登录后自动进行代理设置,可以直接将export http_proxy=
http://
127.0.0.1:8123/
https_proxy=
http://
127.0.0.1:8123/
放在~/.bashrc中。
可以为命令设置别名,以减少输入,在~/.bashrc中增加如下内容:
alias ="http_proxy=
http://
127.0.0.1:8123
https_proxy=
http://
127.0.0.1:8123
"
执行source ~/.bashrc使其生效,然后可以如下执行需要代理的命令:
hp curl ip.gs
最后说一下我使用的海外IP代理商smartproxy,Smartproxy是海外HTTP代理服务器提供商,IP可以精准定位城市级,每个月都会更新IP池,一手IP,服务于大数据采集领域帮助企业/个人快速高效获取数据源,真的非常便宜实惠,而已速度快又很稳定。
http://blog.itpub.net/70021123/viewspace-2913492/
页:
[1]