最新消息:

[python]requests使用proxy代理服务器

IT技术 ipcpu 1523浏览 0评论

python中requests模块,支持设置代理来访问目标网站。

一、使用HTTP代理

import requests

headers = {
    'user-agent': 'Mozilla/0.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'
}

proxies = {
  'http': 'http://172.28.9.46:10802',
  'https': 'http://172.28.9.46:10802',
  'https://www.getip.org': 'http://172.28.9.46:10802'
}

response = requests.get('https://www.getip.org', headers=headers ,proxies=proxies)
print(response.text)

这里需要注意的是:
如果只配置
'http': 'http://172.28.9.46:10802',
那么,只有访问http协议网站才会走代理,同理https也是如此。
如果只想访问某些个别网站时走代理,用如下写法
'https://www.getip.org': 'http://172.28.9.46:10802'
KV键值对中,K是访问的站点,V是代理服务器地址。

二、SOCKS5代理

除了基本的 HTTP 代理之外,Requests 还支持使用 SOCKS 协议的代理。
这是一项可选功能,需要在使用前安装其他第三方库,如下:

pip install requests[socks] -i https://mirrors.aliyun.com/pypi/simple

代码如下

import requests

headers = {
    'user-agent': 'Mozilla/0.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36'
}

proxies = {
  'http': 'socks5h://172.28.9.46:10801',
  'https': 'socks5h://172.28.9.46:10801',
}

response = requests.get('https://www.getip.org', headers=headers ,proxies=proxies)
print(response.text)

三、DNS解析的问题

HTTP、HTTPS、SOCKS5H都是远程代理服务器来进行域名解析。
SOCKS5是本地进行域名解析,/etc/hosts文件会生效。

本地解析和远程解析有什么区别?
一般情况没有区别,但是遇到一些被墙的域名,使用本地解析无法访问,只能使用远程解析。

参考资料

https://requests.readthedocs.io/en/latest/user/advanced/#proxies

来自为知笔记(Wiz)

转载请注明:IPCPU-网络之路 » [python]requests使用proxy代理服务器

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址