前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >代理可用性测试及使用

代理可用性测试及使用

原创
作者头像
叶子Tenney
发布2023-04-04 11:34:58
7620
发布2023-04-04 11:34:58
举报

引言

代理(Proxy)是指在网络通信中充当中间人的服务器,它接收客户端发送的请求,然后向服务器发送请求,获取响应后再将响应返回给客户端。代理服务器通常用于隐藏客户端的真实IP地址,提高安全性、访问速度等方面的需求。

在进行爬虫时,由于一些网站会采取反爬虫机制,可能会限制同一IP地址的访问频率,因此需要使用代理来切换IP地址进行爬取。下面介绍几种代理使用方案及查看代理是否成功的方法。

过程

本文所有代理以127.0.0.1:7890为例

测试代理可用性/对部分请求使用代理

shell 中测试代理可用性

代码语言: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 中构建请求头使用代理

代码语言:python
复制
import requests

URL = "http://icanhazip.com"
proxies = {"http": "http://127.0.0.1:7890", "https": "http://127.0.0.1:7890"}

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:7890", 而urllib2.Requestpython自带库.

代码语言: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:7890",
           'https': "socks5://127.0.0.1:7890"}

全局代理

MacOS/Linux Bash/zsh

代码语言:shell
复制
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

GNOME

代码语言:shell
复制
# 代理查看
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代理
代码语言:python
复制
import os
os.environ["http_proxy"] = "http://127.0.0.1:1231"
os.environ["https_proxy"] = "http://127.0.0.1:1231"
通过tsocks使用SOCKS全局代理

通过设置环境变量的方式通常只能使用HTTP代理。要使用全局SOCKS代理可以使用tsocks.

安装tsocks后,编辑/etc/tsocks.conf,以使用端口为7890的本地SOCKS5代理为例:

代码语言:txt
复制
server = 127.0.0.1
server_port = 7890 
server_type = 5

配置完成后在原来的脚本执行命令前添加tsocks即可使用,例如:

代码语言:txt
复制
tsocks python3 myscript.py

R

代码语言:text
复制
Sys.setenv(http_proxy="http://127.0.0.1:7890")
Sys.setenv(https_proxy="http://127.0.0.1:7890")
Sys.setenv(all_proxy="socks5://127.0.0.1:7890")

结论

题外话

一些好用的查看ip的网站:

国内

https://ip.cn

您的IP信息

域名解析地址:

59.49.101.211

所在地理位置:

中国 山西省 太原市 电信

http://www.cip.cc

http://www.cip.cc
http://www.cip.cc

http://myip.ipip.net

代码语言:txt
复制
当前 IP:59.49.101.211  来自于:中国 山西 太原  电信

国外

http://icanhazip.com

代码语言:txt
复制
37.19.221.152

https://ifconfig.me

https://ifconfig.me
https://ifconfig.me

引用

  1. curl命令获取本机外网IP_curl ip_longzhizhui926的博客-CSDN博客
  2. IP.cn - IP 地址查询 | 地理位置 | 手机归属地  | DNS查询
  3. IP查询 - 查IP(www.cip.cc)
  4. https://ifconfig.me
  5. http://icanhazip.com
  6. http://myip.ipip.net
  7. 在Python里使用代理的几种方式 - Lambda Infinite

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 过程
    • 测试代理可用性/对部分请求使用代理
      • shell 中测试代理可用性
      • python 中构建请求头使用代理
    • 全局代理
      • MacOS/Linux Bash/zsh
      • GNOME
      • python
      • R
  • 结论
  • 题外话
    • 国内
      • 国外
      • 引用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档