怎么使用requests函数的proxy参数
proxies = {'https':'http://'+host_proxies,
'http':'http://'+host_proxies
}
headers = {
'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',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'en-US,en;q=0.5',
'Accept-Encoding':'gzip',
'DNT':'1',
'Connection':'close'
}
res =requests.get(url,headers=headers,proxies=proxies)
为什么会报错呢
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: 由于目标计算机积极拒绝,无法连接。'))) 你的用法是对的,不过看起来是代理不可用造成的报错。
你用下面的代码先验证一下代理能不能用。
1)如果代理可以用,你拿到的结果 就是代理的ip。
2)如果代理不可用,看到的将是自己的ip。
import requests
def main():
proxy = {'http': '待验证的代理ip:端口'}
# 如:proxy = {'http': '1.1.1.1:8080'}
url = 'https://my.ip.cn/api/index?ip=&type=0'
headers = {'user-agent': 'firefox', 'Referer': 'https://my.ip.cn/', 'X-Requested-With': 'XMLHttpRequest'}
r = requests.get(url, headers=headers, proxies=proxy)
print(r.text)
if __name__ == '__main__':
main() suchocolate 发表于 2021-10-23 14:53
你的用法是对的,不过看起来是代理不可用造成的报错。
你用下面的代码先验证一下代理能不能用。
1)如果 ...
可是...这个就是我本机的ip,我用ipconfig/all查的
你的代码返回的结果是这个:{"rs":1,"code":0,"address":"美国加利福尼亚 圣何塞 ","ip":"172.68.189.15","isDomain":0} 本帖最后由 suchocolate 于 2021-10-23 21:05 编辑
937135952 发表于 2021-10-23 20:29
可是...这个就是我本机的ip,我用ipconfig/all查的
你的代码返回的结果是这个:
ipconfig /all 查的是你电脑的ip,并不是你所在网络出公网时用的ip。给你个非代理与代理上网路径对比图:
从输出上看,你的ip似乎走代理是成功的。你把你的全部代码发出来,我看看你用的什么代理。 suchocolate 发表于 2021-10-23 20:47
ipconfig /all 查的是你电脑的ip,并不是你所在网络出公网时用的ip。给你个非代理与代理上网路径对比图 ...
import requests
import bs4
host_proxies = "192.168.43.27:8080"
def open_url(url):
global ip_code
global host_proxies
proxies = {
'https':'http://'+host_proxies,
'http':'http://'+host_proxies
}
headers = {
'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',
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'en-US,en;q=0.5',
'Accept-Encoding':'gzip',
'DNT':'1',
'Connection':'close'
}
#res =requests.get(url,headers=headers)
res =requests.get(url,headers=headers,proxies=proxies)
print(res)
url ='http://guba.eastmoney.com/list,000001,f_5.html'
open_url(url) 937135952 发表于 2021-10-23 22:26
你的这个192.168.43.27是内网的代理服务器吗? suchocolate 发表于 2021-10-23 22:57
你的这个192.168.43.27是内网的代理服务器吗?
啊,我不太清楚啊,我用的是手机开的热点,ip是config/all查的,是在学校里。
是因为在学校里所以代理服务器是内网的这样子吗? 937135952 发表于 2021-10-24 08:41
啊,我不太清楚啊,我用的是手机开的热点,ip是config/all查的,是在学校里。
是因为在学校里所以代理服 ...
是这样,一般代理是用来大规模爬取才用,为了防止被爬取的网站反扒的。
如果你是自己学习,可以不用设置代理,也可以爬取的。你可以不用proxies参数试试。 suchocolate 发表于 2021-10-24 09:55
是这样,一般代理是用来大规模爬取才用,为了防止被爬取的网站反扒的。
如果你是自己学习,可以不用设置 ...
我就是有大规模爬取需求,访问次数多了会被屏蔽ip,网页返回504。所以用代理ip爬,代理ip的模块都写好了,就差这一步替换代理ip爬取了。但是不知道为什么用本机ip测试的时候出错了 937135952 发表于 2021-10-24 10:03
我就是有大规模爬取需求,访问次数多了会被屏蔽ip,网页返回504。所以用代理ip爬,代理ip的模块都写好了 ...
你是说,192.168.43.27是你本机ip? 是不是多了http?
proxies={
'https':host_proxies
}
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吗 937135952 发表于 2021-10-24 14:28
我不太懂。ipconfig/all查到的ipv4是192.168.43.27。
百度查的本机IP: 112.17.237.149
然后我百度了这 ...
我想的是proxies默认值为本机ip,然后当访问被限制后,再换用代理ip池里的ip 937135952 发表于 2021-10-24 14:28
我不太懂。ipconfig/all查到的ipv4是192.168.43.27。
百度查的本机IP: 112.17.237.149
然后我百度了这 ...
proxies要填代理服务器的ip,不填自己的ip,也不填你在网上查的自己的ip。
内网ip在去公网的时候,会被路由器或防火墙nat。请看我上面我画的图?
大规模爬取,那么你要准备代理池的。
页:
[1]