注册
登录
代理IP知识 / 内容详情
为什么设置了代理IP,却还是通过本地IP请求
站大爷 官方 2023-11-17 15:27:56

众所周知,通过使用代理IP,网络爬虫可以伪装成不同的IP地址,以模拟不同的用户访问行为,从而更好地抓取网页数据。


然而,在使用代理IP进行爬虫工作一会儿后,还是被限制访问了。在通过测试后发现,代理IP并没有生效,是通过本地IP发出的请求,这是怎么回事呢?

为什么设置了代理IP,却还是通过本地IP请求

在Python的requests库中,我们可以通过proxies参数来设置代理,为HTTP和HTTPS协议分别提供了代理IP和端口。


在调用requests.get()函数时,我们无需特别指定要使用哪个协议的代理,因为requests库会自动根据提供的URL,来判断应该使用哪个协议的代理。


以下是一个python使用代理请求的代码示例:    

           
import requests  
  
proxies = {  
   "http":"http://ip:port",  
   "https":"http://ip:port",  
}  
  
url = "https://www.zdaye.com"  # 这里请替换为你要访问的URL  
response = requests.get(url, proxies=proxies)  
  
print(response.text)


在这个示例中,如果url是http开头的,那么requests库会自动选择使用"http"的代理;如果是https开头的,那么会自动选择使用"https"的代理。


如果没有为特定的协议设置代理,requests库会尝试使用默认的代理设置,这可能取决于客户端的网络环境或代理服务器的配置。如果没有可用的代理,requests库会直接使用本地IP来访问目标URL。


如果使用代理IP后,却还是通过本地IP请求,那么就有以下三种情况:


1、proxies里只设置了http协议的代理IP,但requests.get()是请求https网站。因为没有合适的协议的代理IP,requests库会直接使用本地IP来访问目标URL。

例如:

              
proxies = {  
   "http":"http://ip:port",  
}  
response = requests.get("https://www.zdaye.com", proxies=proxies)


2、proxies里只设置了https协议的代理IP,但requests.get()是请求http网站。因为没有合适的协议的代理IP,requests库会直接使用本地IP来访问目标URL。

例如:

          
proxies = {  
   "https":"http://ip:port",  
}  
  
response = requests.get("https://www.zdaye.com", proxies=proxies)

3、proxies里协议全都设置错误,没有可匹配的协议,不管访问什么协议的网站,requests库会直接使用本地IP来访问目标URL。

例如:

          
proxies = {  
   "http:":"http://ip:port",  
   "https:":"http://ip:port",  
}  
response = requests.get("https://www.zdaye.com", proxies=proxies)

在使用代理IP访问网站时,我们必须特别小心。每一个细小的差别,都可能导致完全不同的结果。

代理IP能帮我们隐藏真实IP地址,避免被目标网站封禁或限制访问,但若设置不当,则可能依然会暴露本地IP。所以,确保proxies设置正确,非常重要。



立即注册站大爷用户,免费试用全部产品
立即注册站大爷用户,免费试用全部产品