Python:为什么加个ip输入结果不一样

img

img


Python的requests模块的url加个ip运行结果不一样呢?

加了IP代表访问的路径不同了

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/757292
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:python-requests模块实现ip代理池
  • 除此之外, 这篇博客: Python爬虫IP代理的设置中的 二、如果你用的requests模块,那么会简单的多了 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • **

    import requests
    #设置代理ip
    proxies = {
    	"http":"http://116.209.52.120:9999"
    }
    response = requests.request("get","http://www.baidu.com",proxies = proxies)
    print(response.text)
    
  • 您还可以看一下 裴帅帅老师的Python爬虫从入门到进阶实战课程中的 Python爬虫的URL管理器的知识小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    当给url添加一个ip地址时,请求的结果会与之前不同,可能的原因如下:

    1. IP地址的问题:当你使用IP地址作为主机部分添加到URL中时,请求会直接发送到该IP地址的服务器上,而不是通过域名解析找到对应的服务器。这可能导致请求的结果与之前不同,因为不同的服务器上可能存在不同的资源或配置。

    2. 代理服务器的问题:你在请求中使用了一个代理IP地址。代理服务器是一种中间服务器,它接受客户端的请求并转发给目标服务器,然后将目标服务器的响应返回给客户端。如果代理服务器设置不正确或者代理IP地址无效,可能会导致请求的结果与之前不同。

    解决方案如下:

    1. 确定IP地址的有效性:确保你添加的IP地址是一个合法的Internet主机域名或IP地址。你可以使用urllib库中的urlparse函数来解析URL,获取主机部分的IP地址,并对其进行验证。

    2. 检查代理IP地址的有效性:如果你使用了代理IP地址,你需要确保代理服务器能够正常工作,并且代理IP地址是有效的。你可以使用requests库提供的proxies参数来设置代理,然后发送请求。如果请求失败或者返回结果不正确,可能是代理IP地址有问题。

    下面是一个示例代码,用于验证IP地址的有效性和检查代理IP地址的可用性:

    import requests
    from urllib.parse import urlparse
    
    # 定义一个函数来验证IP地址的有效性
    def check_ip_address(ip_address):
        try:
            # 请求一个基于IP地址的URL,比如"http://<IP地址>/path"
            url = "http://{}/path".format(ip_address)
            response = requests.get(url)
            # 检查请求的结果是否正常
            if response.status_code == 200:
                return True
            else:
                return False
        except:
            return False
    
    # 构造一个URL,包含IP地址
    url_with_ip = "http://<IP地址>/path"
    
    # 通过解析URL获取IP地址
    parsed_url = urlparse(url_with_ip)
    ip_address = parsed_url.netloc
    
    # 验证IP地址的有效性
    if check_ip_address(ip_address):
        print("IP地址有效")
        # 使用代理IP地址发送请求并检查代理的可用性
        proxies = {
            "http": "http://{}".format(ip_address)
        }
        response = requests.get("http://www.baidu.com", proxies=proxies)
        if response.status_code == 200:
            print("代理IP地址可用")
        else:
            print("代理IP地址不可用")
    else:
        print("IP地址无效")
    

    请将上述代码保存为一个Python脚本,并将<IP地址>替换为你要测试的IP地址。然后运行脚本,将会输出IP地址的有效性和代理IP地址的可用性。

加了ip后,request请求的url参数就变了,对应后端的路由也就变了,返回的内容自然也就不一样了