引言
代理(Proxy)是指在网络通信中充当中间人的服务器,它接收客户端发送的请求,然后向服务器发送请求,获取响应后再将响应返回给客户端。代理服务器通常用于隐藏客户端的真实IP地址,提高安全性、访问速度等方面的需求。
在进行爬虫时,由于一些网站会采取反爬虫机制,可能会限制同一IP地址的访问频率,因此需要使用代理来切换IP地址进行爬取。下面介绍几种代理使用方案及查看代理是否成功的方法。
过程
本文所有代理以127.0.0.1:7890
为例
测试代理可用性/对部分请求使用代理
shell
中测试代理可用性
$ curl http://icanhazip.com
59.49.101.211
$ curl http://icanhazip.com --proxy http://127.0.0.1:7890
37.19.221.152
python
中构建请求头使用代理
import requests
URL = "http://icanhazip.com"
proxies = {"http": "http://127.0.0.1", "https": "http://127.0.0.1"}
response = requests.get(URL, proxies=proxies)
if response.status_code == 200:
print("Your public IP address is:", response.text.strip())
else:
print("Failed to retrieve public IP address.")
注意, requests
为第三方库, proxies
格式为"http": "http://127.0.0.1"
, 而urllib2.Request
为python
自带库.
import requests
可选代理IP构建方式
proxy = '127.0.0.1:7890'
proxy_values = "%(ip)s" % {'ip': proxy}
proxies = {"http": proxy_values, "https": proxy_values}也可以使用socks5代理
proxies = {'http': "socks5://127.0.0.1",
'https': "socks5://127.0.0.1"}
全局代理
MacOS/Linux Bash/zsh
export https_proxy=http://127.0.0.1 http_proxy=http://127.0.0.1 all_proxy=socks5://127.0.0.1
GNOME
# 代理查看
gsettings get org.gnome.system.proxy mode
gsettings get org.gnome.system.proxy.http host
gsettings get org.gnome.system.proxy.https port
gsettings get org.gnome.system.proxy.socks host代理设置
无
gsettings set org.gnome.system.proxy mode 'none'
有
gsettings set org.gnome.system.proxy.http host 127.0.0.1
gsettings set org.gnome.system.proxy.socks port 7890查看
gsettings list-recursively
gsettings list-recursively | grep proxy
python
设置环境变量使用HTTP代理
import os
os.environ["http_proxy"] = "http://127.0.0.1"
os.environ["https_proxy"] = "http://127.0.0.1"
通过tsocks使用SOCKS全局代理
通过设置环境变量的方式通常只能使用HTTP代理。要使用全局SOCKS代理可以使用tsocks.
安装tsocks后,编辑/etc/tsocks.conf
,以使用端口为7890的本地SOCKS5代理为例:
server = 127.0.0.1
server_port = 7890
server_type = 5
配置完成后在原来的脚本执行命令前添加tsocks即可使用,例如:
tsocks python3 myscript.py
R
Sys.setenv(http_proxy="http://127.0.0.1")
Sys.setenv(https_proxy="http://127.0.0.1")
Sys.setenv(all_proxy="socks5://127.0.0.1")
结论
题外话
一些好用的查看ip的网站:
国内
https://ip.cn
您的IP信息 | |
---|---|
域名解析地址: | 59.49.101.211 |
所在地理位置: | 中国 山西省 太原市 电信 |
当前 IP:59.49.101.211 来自于:中国 山西 太原 电信
国外
37.19.221.152
引用
- curl命令获取本机外网IP_curl ip_longzhizhui926的博客-CSDN博客
- IP.cn - IP 地址查询 | 地理位置 | 手机归属地 | DNS查询
- IP查询 - 查IP(www.cip.cc)
- https://ifconfig.me
- http://icanhazip.com
- http://myip.ipip.net
- 在Python里使用代理的几种方式 - Lambda Infinite