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

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

    from PIL import Image
    import pytesseract

    读取验证码图片

    image = Image.open('captcha.png')

    使用pytesseract库进行验证码识别

    text = pytesseract.image_to_string(image)
    print(text)

  2. 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)

  3. 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)

  4. 动态加载数据:一些网站会使用JavaScript动态加载数据,可以使用Selenium或者Pyppeteer等自动化工具模拟用户操作来获取数据。示例代码如下:

    from selenium import webdriver

    使用Chrome浏览器驱动

    driver = webdriver.Chrome()

    打开网页

    driver.get(url)

    等待动态加载完成

    time.sleep(5)

    获取动态加载的数据

    data = driver.page_source

    关闭浏览器驱动

    driver.quit()

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

本文由mdnice多平台发布

相关推荐
司职在下6 分钟前
YAML配置文件的格式
python
rhythmcc7 分钟前
【Django5】django的helloworld
python·django
右恩7 分钟前
三十种编程语言庆祝【国庆节】!!!
python·dash
chusheng184030 分钟前
Python 中的 HTTP 编程入门,如何使用 Requests 请求网络
网络·python·http
IOT.FIVE.NO.11 小时前
Python PDF转图片自定义输出
开发语言·python
光仔December1 小时前
【Python从入门到进阶】65、Pandas如何批量拆分与合并Excel文件
python·excel·pandas·openpyxl·xlsxwriter
hakesashou1 小时前
python是什么语言写的
python
TuringSnowy1 小时前
SparkSQL和Spark常用语句
python·spark
不写八个2 小时前
Python办公自动化教程(001):PDF内容提取
开发语言·python·pdf
BYSJMG2 小时前
计算机毕设设计推荐-基于python+Djanog大数据的电影数据可视化分析
大数据·数据库·python·django·毕业设计·课程设计·毕设