• 学习常见的反爬虫手段,如验证码、限制访问频率等


    1. 验证码(CAPTCHA):用于识别机器人和自动化程序,可以通过以下方式实现:
    from PIL import Image
    import pytesseract

    # 读取验证码图片
    image = Image.open('captcha.png')

    # 使用pytesseract库进行验证码识别
    text = pytesseract.image_to_string(image)
    print(text)
    • 1
    1. IP限制/访问频率限制:限制同一个IP地址或者同一个用户在一定时间内的请求次数,可以通过以下方式实现:
    import time

    # 限制每分钟最多5次请求
    MAX_REQUESTS_PER_MINUTE = 5

    # 获取当前时间戳
    current_time = time.time()

    # 判断该IP地址或用户在一分钟内的请求次数是否超过限制
    if redis_client.get(ip_address_or_user):
        num_requests = int(redis_client.get(ip_address_or_user))
        if num_requests >= MAX_REQUESTS_PER_MINUTE:
            return '请求超过限制'
        else:
            redis_client.set(ip_address_or_user, num_requests + 1, ex=60)
    else:
        redis_client.set(ip_address_or_user, 1, ex=60)
    • 1
    1. User-Agent检测:判断请求中的User-Agent头部信息是否符合正常浏览器的标准,可以使用以下代码示例:
    import requests

    # 发起HTTP请求时设置User-Agent头部信息
    headers = {
        'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'
    }

    # 发起请求
    response = requests.get(url, headers=headers)
    • 1
    1. 动态加载数据:一些网站会使用JavaScript动态加载数据,可以使用Selenium或者Pyppeteer等自动化工具模拟用户操作来获取数据。示例代码如下:
    from selenium import webdriver

    # 使用Chrome浏览器驱动
    driver = webdriver.Chrome()

    # 打开网页
    driver.get(url)

    # 等待动态加载完成
    time.sleep(5)

    # 获取动态加载的数据
    data = driver.page_source

    # 关闭浏览器驱动
    driver.quit()
    • 1

    需要注意,使用反爬手段要遵守网站的规则和法律法规,不得进行非法活动。

    本文由 mdnice 多平台发布

  • 相关阅读:
    机器学习介绍与分类
    OneFlow-ONNX v0.6.0正式发布
    Linux环境变量配置在/etc/profile或/etc/profile.d/中有什么区别?
    TypeScript - 字符串的字面类型
    日期时间格式字符串“yyyy-MM-dd HH:mm:ss“的意思
    java-IOC(控制反转) 理论推导
    OpenCV的二值化处理函数threshold()详解
    角点检测与SIFT
    基于车联网的网络切片GBR动态专载触发方案
    zookeeper选举leader源码剖析
  • 原文地址:https://blog.csdn.net/wq031787/article/details/132927034