有时候我们需要配置正向代理,比如利用爬虫爬取网站时,为了避免ip被限制,想利用国内的ip帮我们转发。我们除了可以在脚本中加入代理外,也可以直接在主机上配置代理。本博文将简单介绍如何在Ubuntu系统配置正向代理。主要介绍系统配置和Squid代理服务器搭建两种方式。
一、系统配置
1. 界面操作
(1) 点击设置->Network
(2) 点击Network Proxy,并选择manual
在HTTP Proxy输入支持http协议的代理ip和端口,HTTPS、FTP以及Socks同理。
2. 命令行操作
(1) 临时使用
在命令行中输入,配置环境变量,但是这种操作会在本次系统运行的过程中有效。如果关机重启后,就无效了:
export http_proxy='http://ip地址:端口'
export https_proxy='http://ip地址:端口'
(2) 配置系统文件
我们配置系统环境文件etc/profile或者是~/.bashrc,在系统启动后会自动读取该文件中的环境变量,并使其生效。
# 保存原有配置文件
cp /etc/profile /etc/profile.cp
# 编辑配置文件
vim /etc/profile
- 在profile文件末尾输入:
# proxy
export http_proxy='http://ip地址:端口'
export https_proxy='http://ip地址:端口'
- 保存配置,重启或者输入
source /etc/profile
让配置立即生效
- 或者编辑文件 ~/.bashrc,添加环境变量。
二、Squid代理软件配置正向代理
代理方式可以分为三种,正向代理、反向代理、透明代理。他们的概念和区别:【在这里】。一般我们的需求是正向代理,即你发出请求后,利用通过代理帮你转发后响应。接下来我们主要介绍一下如何利用squid配置正向代理。
- 下载squid
sudo apt update
sudo apt upgrade
sudo apt install squid
- 验证服务状态
sudo systemctl status squid
- 配置squid.conf文件
cp /etc/squid/squid.conf /etc/squid/squid.conf.cp
sudo vim /etc/squid/squid.conf
- 删除所有原配置,输入
这里给的配置,可用于只需要配置一个代理池,然后希望每次代理ip动态变化,那么可以使用一下配置,即每次只使用上级代理转发请求,并随机转发:
http_access allow localhost
http_port 3128
cache_peer ip地址 parent 端口号 0 no-query round-robin name=a
cache_peer ip地址 parent 端口号 0 no-query round-robin name=b
cache_peer ip地址 parent 端口号 0 no-query round-robin name=c
never_direct allow all
retry_on_error on
- 需要注意的是,squid只支持http类协议的流量。如果能提供一个上级代理池列表,squid无法自动检测哪个代理可用,即使开启retry_on_error,也不能自动在连接失效后自动切换新的上级代理ip。
三、其他
(1) 免费代理
可以从以下网站中寻找免费的国内代理。
- https://proxydb.net/?country=CN
- https://proxy-tools.com/proxy/cn
- https://www.proxydocker.com/zh/socks5-list/country/China
- https://www.tcpvpn.com/vpn-server-china
- http://spys.one/free-proxy-list/CN
- 代理可用性和速度的测试:https://www.toolnb.com/tools/proxy.html
(2) Docker环境的代理
宿主机配置的代理,Docker中并没有直接生效。而且Docker中配置/etc/profile的话,每次重启docker后也不会自动生效环境,可以在Dockerfile中加入配置代理信息后再构建镜像。
ENV HTTP_PROXY='http://ip地址:端口号'
ENV HTTPS_PROXY='http://IP地址:端口号'