tylrr 2023-01-27 09:39 采纳率: 84.6%
浏览 34
已结题

使用代理ip访问ip查询网站,返回的却是本地ip,请问是什么原因?

这是一个代理抓取脚本,用request库从一个代理网站上面抓取代理并进行验证。验证网站是 https://ipv4.icanhazip.com/ ,可以显示当前客户端的ip地址。
我的预期是,通过requests 的proxies参数用代理访问这个网站时,脚本显示的是代理的ip地址,但实际运行时,脚本显示的却是我本地的ip地址。

img

请问是什么原因呢?谢谢


```python
import requests
from lxml import etree
# 获取快代理首页的代理
def get_proxy_list(i):
    url = f"https://www.kuaidaili.com/free/inha/{i}/"      #https://www.freeproxylists.net/zh/?s=u   https://ip.jiangxianli.com/?page=1
    payload = {}
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
        'Accept': 'application/json, text/javascript, */*; q=0.01',
    }
    response = requests.request("GET", url, headers=headers, data=payload)
    res = []
    _ = etree.HTML(response.text)
    type_dct = {
        "HTTP": "http://",
        "HTTPS": "https://"
    }
    data_list = _.xpath("//tbody/tr")
    for data in data_list:
        ip = data.xpath("./td[1]/text()")[0]
        port = data.xpath("./td[2]/text()")[0]
        type = data.xpath("./td[4]/text()")[0]
        res.append(type_dct[type] + ip + ':' + port)
    return res


# 测试代理
def check(proxy):
    href='https://ipv4.icanhazip.com'
    if 'https' in proxy:
        proxies = {'https': proxy}
    else:
        proxies = {'http': proxy}
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4396.0 Safari/537.36'
    }
    try:
        r = requests.get(href, proxies=proxies, timeout=10, headers=headers)
        print(r.content)
        if r.status_code == 200:
            return True
    except:
        return False
if __name__ == '__main__':
    for i in range(1,6):
        proxy_list = get_proxy_list(i)
        print(proxy_list)
        for p in proxy_list:
            print(p, check(p))

```

  • 写回答

4条回答 默认 最新

  • 梦想橡皮擦 Python领域优质创作者 2023-01-27 10:26
    关注

    好问题,这个其实很好解释,免费代理并不是高匿名的

    有些站点时存在反代理检测的,如果你使用的不是【真】高匿代理,那展示的就是你的真实 IP,

    如果想测试 IP是否起作用,可以使用 httpbin.org/ip ,这个站点没有设置反代理。

    除此之外,还可以使用 VPN 或者代理服务器进行请求,就展示你的代理IP了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月4日
  • 已采纳回答 1月27日
  • 修改了问题 1月27日
  • 修改了问题 1月27日
  • 展开全部

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装