鱼C论坛

 找回密码
 立即注册
查看: 1376|回复: 13

[已解决]怎么使用requests函数的proxy参数

[复制链接]
发表于 2021-10-23 14:50:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1.     proxies = {
  2.         'https':'http://'+host_proxies,
  3.         'http':'http://'+host_proxies
  4.         }
  5.    
  6.    
  7.     headers = {
  8.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
  9.     'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  10.     'Accept-Language':'en-US,en;q=0.5',
  11.     'Accept-Encoding':'gzip',
  12.     'DNT':'1',
  13.     'Connection':'close'
  14.     }
  15.     res =requests.get(url,headers=headers,proxies=proxies)
复制代码


为什么会报错呢
  1. ProxyError: HTTPConnectionPool(host='192.168.43.27', port=8080): Max retries exceeded with url: http://guba.eastmoney.com/list,600641,f_1.html (Caused by ProxyError('Cannot connect to proxy.', NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000020C4A35FE80>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。')))
复制代码
最佳答案
2021-10-24 19:16:12
937135952 发表于 2021-10-24 14:28
我不太懂。ipconfig/all查到的ipv4是192.168.43.27。
百度查的本机IP: 112.17.237.149
然后我百度了这 ...

proxies要填代理服务器的ip,不填自己的ip,也不填你在网上查的自己的ip。
内网ip在去公网的时候,会被路由器或防火墙nat。请看我上面我画的图?
大规模爬取,那么你要准备代理池的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-23 14:53:40 | 显示全部楼层
你的用法是对的,不过看起来是代理不可用造成的报错。
你用下面的代码先验证一下代理能不能用。
1)如果代理可以用,你拿到的结果 就是代理的ip。
2)如果代理不可用,看到的将是自己的ip。
  1. import requests


  2. def main():
  3.     proxy = {'http': '待验证的代理ip:端口'}
  4.     # 如:proxy = {'http': '1.1.1.1:8080'}
  5.     url = 'https://my.ip.cn/api/index?ip=&type=0'
  6.     headers = {'user-agent': 'firefox', 'Referer': 'https://my.ip.cn/', 'X-Requested-With': 'XMLHttpRequest'}
  7.     r = requests.get(url, headers=headers, proxies=proxy)
  8.     print(r.text)


  9. if __name__ == '__main__':
  10.     main()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-23 20:29:37 | 显示全部楼层
suchocolate 发表于 2021-10-23 14:53
你的用法是对的,不过看起来是代理不可用造成的报错。
你用下面的代码先验证一下代理能不能用。
1)如果 ...

可是...这个就是我本机的ip,我用ipconfig/all查的
你的代码返回的结果是这个:
  1. {"rs":1,"code":0,"address":"美国  加利福尼亚 圣何塞 ","ip":"172.68.189.15","isDomain":0}
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 20:47:32 | 显示全部楼层
本帖最后由 suchocolate 于 2021-10-23 21:05 编辑
937135952 发表于 2021-10-23 20:29
可是...这个就是我本机的ip,我用ipconfig/all查的
你的代码返回的结果是这个:


ipconfig /all 查的是你电脑的ip,并不是你所在网络出公网时用的ip。给你个非代理与代理上网路径对比图: Untitled.png
从输出上看,你的ip似乎走代理是成功的。你把你的全部代码发出来,我看看你用的什么代理。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-23 22:26:28 | 显示全部楼层
suchocolate 发表于 2021-10-23 20:47
ipconfig /all 查的是你电脑的ip,并不是你所在网络出公网时用的ip。给你个非代理与代理上网路径对比图 ...
  1. import requests
  2. import bs4
  3.      
  4. host_proxies = "192.168.43.27:8080"
  5. def open_url(url):
  6.     global ip_code
  7.     global host_proxies
  8.     proxies = {
  9.         'https':'http://'+host_proxies,
  10.         'http':'http://'+host_proxies
  11.         }
  12.    
  13.    
  14.     headers = {
  15.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
  16.     'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  17.     'Accept-Language':'en-US,en;q=0.5',
  18.     'Accept-Encoding':'gzip',
  19.     'DNT':'1',
  20.     'Connection':'close'
  21.     }
  22.     #res =requests.get(url,headers=headers)
  23.     res =requests.get(url,headers=headers,proxies=proxies)
  24.     print(res)
  25.    
  26. url ='http://guba.eastmoney.com/list,000001,f_5.html'     
  27. open_url(url)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-23 22:57:46 | 显示全部楼层

你的这个192.168.43.27是内网的代理服务器吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-24 08:41:02 | 显示全部楼层
suchocolate 发表于 2021-10-23 22:57
你的这个192.168.43.27是内网的代理服务器吗?

啊,我不太清楚啊,我用的是手机开的热点,ip是config/all查的,是在学校里。
是因为在学校里所以代理服务器是内网的这样子吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-24 09:55:32 | 显示全部楼层
937135952 发表于 2021-10-24 08:41
啊,我不太清楚啊,我用的是手机开的热点,ip是config/all查的,是在学校里。
是因为在学校里所以代理服 ...

是这样,一般代理是用来大规模爬取才用,为了防止被爬取的网站反扒的。
如果你是自己学习,可以不用设置代理,也可以爬取的。你可以不用proxies参数试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-24 10:03:04 | 显示全部楼层
suchocolate 发表于 2021-10-24 09:55
是这样,一般代理是用来大规模爬取才用,为了防止被爬取的网站反扒的。
如果你是自己学习,可以不用设置 ...

我就是有大规模爬取需求,访问次数多了会被屏蔽ip,网页返回504。所以用代理ip爬,代理ip的模块都写好了,就差这一步替换代理ip爬取了。但是不知道为什么用本机ip测试的时候出错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-24 11:24:24 | 显示全部楼层
937135952 发表于 2021-10-24 10:03
我就是有大规模爬取需求,访问次数多了会被屏蔽ip,网页返回504。所以用代理ip爬,代理ip的模块都写好了 ...

你是说,192.168.43.27是你本机ip?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-24 13:27:46 | 显示全部楼层
是不是多了http?
proxies={
           'https':host_proxies
              }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-24 14:28:13 | 显示全部楼层
suchocolate 发表于 2021-10-24 11:24
你是说,192.168.43.27是你本机ip?

我不太懂。ipconfig/all查到的ipv4是192.168.43.27。
百度查的本机IP: 112.17.237.149
然后我百度了这两个的区别。
但是为什么我想用proxies =“” ,这两个ip时都会出现访问错误。
是因为本机ip不能用做proxies吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-24 14:29:22 | 显示全部楼层
937135952 发表于 2021-10-24 14:28
我不太懂。ipconfig/all查到的ipv4是192.168.43.27。
百度查的本机IP: 112.17.237.149
然后我百度了这 ...

我想的是proxies默认值为本机ip,然后当访问被限制后,再换用代理ip池里的ip
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-24 19:16:12 | 显示全部楼层    本楼为最佳答案   
937135952 发表于 2021-10-24 14:28
我不太懂。ipconfig/all查到的ipv4是192.168.43.27。
百度查的本机IP: 112.17.237.149
然后我百度了这 ...

proxies要填代理服务器的ip,不填自己的ip,也不填你在网上查的自己的ip。
内网ip在去公网的时候,会被路由器或防火墙nat。请看我上面我画的图?
大规模爬取,那么你要准备代理池的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 04:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表