首页 > 其他分享 >学习常见的反爬虫手段,如验证码、限制访问频率等

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

时间:2023-09-16 22:44:53浏览次数:41  
标签:请求 get 爬虫 验证码 访问 time import requests

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

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

# 使用pytesseract库进行验证码识别
text = pytesseract.image_to_string(image)
print(text)
  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. 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. 动态加载数据:一些网站会使用JavaScript动态加载数据,可以使用Selenium或者Pyppeteer等自动化工具模拟用户操作来获取数据。示例代码如下:
from selenium import webdriver

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

# 打开网页
driver.get(url)

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

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

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

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

本文由mdnice多平台发布

标签:请求,get,爬虫,验证码,访问,time,import,requests
From: https://www.cnblogs.com/wqmxh/p/17707450.html

相关文章

  • 【设计模式】访问者模式Visitor:实现对象级别的矩阵结构
    (目录)访问者模式:一个原理看似很简单,但是理解起来有一定难度,使用场景相对较少的行为型模式:它能将算法与其所作⽤的对象隔离开来假如有这样⼀位⾮常希望赢得新客户的资深保险代理⼈。他可以拜访街区中的每栋楼,尝试向每个路⼈推销保险。所以,根据⼤楼内组织类型的不同,他可......
  • 44-字典-元素的访问-键的访问-值的访问-键值对的访问
           ......
  • 41-元组-元素访问-计数方法_切片操作_成员资格判断_zip()
            ......
  • 盘点一个Python网络爬虫问题
    大家好,我是皮皮。一、前言前几天在Python最强王者群【刘桓鸣】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。他自己的代码如下:importrequestskey=input("请输入关键字")res=requests.post(url="https://jf.10086.cn/cmcc-web-shop/search/query",data=......
  • sql访问控制
           ......
  • Linux CentOS7 开启SSH访问配置
    0、检查是否安装SSHrpm-qa|grepssh图为已安装的输出 1、安装文本编辑器 1.1、安装vimyum-yinstallvim安装openssh-serveryuminstall-yopensslopenssh-server 2、安装与配置SSH服务 2.1、安装openssh-serveryuminstall-yopensslopenssh-s......
  • 主路由访问二级路由下的网段
    1、问题如下:主路由openwrt的LAN口接了一个二级路由Padavan,现在想要实现PC1访问PC2,我在openwrt里面配置静态路由去往192.168.2.0/24下一跳地址为二级路由WAN口ip192.168.1.2,pc1能ping通pc2的网关,但是pc1却ping不通pc2,pc2能ping通pc1,只能单向通信,请大佬帮我看看什么问题?......
  • Socks5代理与网络安全:保护隐私、绕过限制与爬虫应用
    1.Socks5代理简介Socks5代理是一种网络协议,允许数据在客户端与服务器之间进行传输。与HTTP代理不同,Socks5代理不仅支持TCP连接,还可以处理UDP流量,因此在某些需要实时数据传输的场景中表现出色。它能够代理各种应用层协议,为用户提供更灵活的网络体验。2.保护隐私与匿名性一个重要的......
  • Python爬虫如何使用代理IP进行抓取
    前言Python爬虫是一种非常强大的工具,可以用于抓取各种网站的数据。但是,在一些情况下,我们需要使用代理IP来完成数据抓取,如绕过IP限制或保护隐私信息等。本文将介绍如何使用Python爬虫抓取数据时使用代理IP,并提供示例代码和注意事项。一、什么是代理IP代理IP是一种充当客户端和服务器......
  • scp、ssh访问远程机器不用输入密码
    在linux操作系统中,可以使用scp命令进行服务器之间的文件复制,但是复制时需要输入远程服务器的密码,这在经常需要进行远程复制操作或者使用脚本复制时会略显麻烦,如果远程复制是在定时任务中执行,更会导致脚本不能自动执行,这时就需要实现无需输入密码进行scp复制。无需输入密码进行scp......