Bootstrap

Ubuntu系统 如何配置正向代理转发

有时候我们需要配置正向代理,比如利用爬虫爬取网站时,为了避免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地址:端口号'
;