Python 采集免费代理,并检测其是否可用

简介: 本次案例实战用到的 Python 第三方模块是 `requests` 和 `lxml`,从技术难度的角度看属于入门级爬虫。
本篇博客将采集互联网中公开代理 IP,并通过 IP 检测站点检测代理的可用性。
未来该内容将会被集成到 爬虫训练场 中。

Python 采集免费代理 IP

模块准备与目标站点说明

本次案例实战用到的 Python 第三方模块是 requestslxml,从技术难度的角度看属于入门级爬虫。

目标站点为:kuaidaili.com,其每日更新部分高匿名代理,可用于测试。

实战采集

先看一下目标页面代码采集的完整案例,然后再进行分析。

def get_proxy_list(i):
    url = f"https://www.kuaidaili.com/free/inha/{i}/"

    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"
    }
    response = requests.request("GET", url, headers=headers)
    res = []
    elements = etree.HTML(response.text)
    type_dct = {
        "HTTP": "http://",
        "HTTPS": "https://"
    }
    data_list = elements.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
AI 代码解读

get_proxy_list() 函数接收页码参数,将其拼接到 url 中,然后使用 requests.request() 方法构造请求,这里直接使用 requests.get() 也是可以的。

得到数据相应之后,直接采用 etree.HTML(response.text) 进行格式化操作,然后通过 xpath 将目标信息提取出来,存放到 res 列表中进行返回。

代理 IP 可用性检测

对接站点

检测代理 IP 是否可以,我们会使用到下述两个站点:

直接访问上述站点,都会得到如下内容,即展示你本地 IP 信息。

我们接下来通过 requests 模块设置代理 IP 访问上述站点,查看代理 I 怕是否可用。

def check(proxy):
    href = 'https://ipv4.icanhazip.com'
    # href = 'http://httpbin.org/ip'
    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=3, headers=headers)
        print(r.content)
        if r.status_code == 200:
            return True
    except:
        return False
AI 代码解读

上述代码最核心的是 requests.get(),其中 proxies 参数设置为代理,timeout 设置请求超时时间,最后修改 main 入口函数部分代码。

if __name__ == '__main__':
    for i in range(1, 5):

        proxy_list = get_proxy_list(i)

        print(proxy_list)
        for p in proxy_list:
            print(p, check(p))
AI 代码解读

再次运行代码,得到代理 IP 的状态。

如何代理 IP 可用,返回 True,否则返回 Flase。

实战中,会出现下述问题。

为何使用代理 IP,依旧展示原 IP

这个其实很好解释,免费代理并不是高匿名的,虽然免费站点会标记 IP 为高匿名代理,但这个不绝对。

如果我们使用的不是【真】高匿代理,那展示的就是你的真实 IP,检测代理 IP 还可以用 httpbin.org/ip ,这个站点没有设置反代理。

如果希望实现绝对的安全,可以使用 VPN 或者代理服务器进行请求,结果就会展示为你的代理 IP。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 849 篇原创博客
目录
打赏
0
0
0
0
748
分享
相关文章
使用Python实现深度学习模型:智能农业病虫害检测与防治
使用Python实现深度学习模型:智能农业病虫害检测与防治
334 65
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
Python图像处理中的内存泄漏问题:原因、检测与解决方案
在Python图像处理中,内存泄漏是常见问题,尤其在处理大图像时。本文探讨了内存泄漏的原因(如大图像数据、循环引用、外部库使用等),并介绍了检测工具(如memory_profiler、objgraph、tracemalloc)和解决方法(如显式释放资源、避免循环引用、选择良好内存管理的库)。通过具体代码示例,帮助开发者有效应对内存泄漏挑战。
41 1
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
61 20
使用 Python TorchRL 进行多代理强化学习
本文详细介绍了如何使用TorchRL库解决多代理强化学习(MARL)问题,重点讨论了在多代理环境中应用近端策略优化(PPO)。通过使用VMAS模拟器,该文展示了如何在GPU上并行训练多机器人系统,使其在避免碰撞的同时到达目标。文章涵盖了依赖项安装、PPO原理、策略与评论家网络设计、数据收集及训练循环,并强调了TorchRL在简化开发流程、提升计算效率方面的优势。无论是集中式还是分布式评论家配置,TorchRL均能有效支持复杂的MARL研究与实践。
112 5
使用 Python TorchRL 进行多代理强化学习
使用 OpenCV 和 Python 轻松实现人脸检测
本文介绍如何使用OpenCV和Python实现人脸检测。首先,确保安装了OpenCV库并加载预训练的Haar特征模型。接着,通过读取图像或视频帧,将其转换为灰度图并使用`detectMultiScale`方法进行人脸检测。检测到的人脸用矩形框标出并显示。优化方法包括调整参数、多尺度检测及使用更先进模型。人脸检测是计算机视觉的基础技术,具有广泛应用前景。
87 10
时间序列结构变化分析:Python实现时间序列变化点检测
在时间序列分析和预测中,准确检测结构变化至关重要。新出现的分布模式往往会导致历史数据失去代表性,进而影响基于这些数据训练的模型的有效性。
659 1
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现深度学习模型:智能质量检测与控制 【10月更文挑战第8天】
503 62
使用Python实现深度学习模型:智能质量检测与控制
使用Python实现智能食品质量检测的深度学习模型
使用Python实现智能食品质量检测的深度学习模型
270 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等