反爬虫机制与反爬虫技术(一)

news2025/1/21 22:06:39

反爬虫机制与反爬虫技术一

    • 1、网络爬虫的法律与道德问题
    • 2、反爬虫机制与反爬虫技术
      • 2.1、User-Agent伪装
      • 2.2、代理IP
      • 2.3、请求频率控制
      • 2.4、动态页面处理
      • 2.5、验证码识别
    • 3、反爬虫案例:豆瓣电影Top250爬取
      • 3.1、爬取目标
      • 3.2、库(模块)简介
      • 3.3、翻页分析
      • 3.4、发送请求
      • 3.5、提取与解析数据
        • 3.5.1、使用BeautifulSoup库
        • 3.5.2、使用lxml与XPath库
      • 3.6、案例调试
      • 3.7、案例测试
    • 4、如何使用Excel打开CSV

1、网络爬虫的法律与道德问题


网络爬虫在使用过程中需要注意法律和道德问题。以下是一些常见的问题:

  • 合法性: 爬虫的行为必须遵守相关法律法规,尊重网站的隐私权和知识产权。不得未经授权地访问和抓取受保护的网页内容
  • 访问频率: 爬虫应该合理设置访问频率,避免对网站服务器造成过大负载或影响其他用户的正常访问
  • 数据使用: 抓取到的数据应该按照法律和道德准则进行合法和合理的使用,遵守数据保护和隐私规定

在使用网络爬虫时,应当遵守相关规定并尊重网站的权益和用户的隐私

2、反爬虫机制与反爬虫技术

2.1、User-Agent伪装

User-Agent能够通过服务器识别出用户的操作系统及版本、CPU类型、浏览器类型及版本等

一些网站会设置User-Agent白名单,只有在白名单范围内的请求才可以正常访问

因此,在我们爬虫时,需要设置User-Agent伪装成一个浏览器HTTP请求,通过修改User-Agent,可以模拟不同的浏览器或设备发送请求,从而绕过一些简单的反爬虫机制

2.2、代理IP

一些网站通常会根据IP地址来判断请求的合法性,如果同一个IP地址频繁请求,就会被认为是爬虫。使用IP代理可以隐藏真实的IP地址,轮流使用多个IP地址发送请求,可以增加爬虫的隐匿性

代理IP是指通过中间服务器转发网络请求的技术。在爬虫中,使用代理IP可以隐藏真实的访问源,防止被目标网站封禁或限制访问

代理分为正向代理和反向代理。正向代理是由客户端主动使用代理服务器来访问目标网站,反向代理是目标网站使用代理服务器来处理客户端的请求

代理IP的优缺点有:

  • 优点:
    • 隐藏真实的访问源,保护个人或机构的隐私和安全
    • 绕过目标网站的访问限制,如IP封禁、地区限制等
    • 分散访问压力,提高爬取效率和稳定性
    • 收集不同地区或代理服务器上的数据,用于数据分析和对比
  • 缺点:
    • 代理IP的质量参差不齐,有些代理服务器可能不稳定、速度慢或存在安全风险
    • 一些目标网站会检测和封禁常用的代理IP,需要不断更换和验证代理IP的可用性
    • 使用代理IP可能增加网络请求的延迟和复杂性,需要合理配置和调整爬虫程序
    • 使用代理IP需要遵守相关法律法规和目标网站的使用规则,不得进行非法活动或滥用代理IP服务

亮数据代理IP:https://www.bright.cn/locations

2.3、请求频率控制

频繁的请求会给网站带来较大的负担,并影响网站的正常运行,因此,网站通常会设置请求频率限制。Python中的time库可以用来控制请求的时间间隔,避免过于频繁的请求

2.4、动态页面处理

一些网站为了防止爬虫,使用了JavaScript来动态生成页面内容,这对于爬虫来说是一个挑战。Python中的Selenium库可以模拟浏览器的行为,执行JavaScript代码,从而获取动态生成的内容

例如在进行数据采集时,很多网站需要进行登录才能获取到目标数据,这时可以使用Selenium库进行模拟登录进行处理

2.5、验证码识别

一些网站为了防止爬虫,会在登录或提交表单时添加验证码。随着反爬的不断发展,逐渐出现了更多复杂的验证码,例如:内容验证码、滑动验证码、图片拼接验证码等

Python提供了一些强大的图像处理库,例如Pillow、OpenCV等,可以用来自动识别验证码,从而实现自动化爬取

3、反爬虫案例:豆瓣电影Top250爬取


本案例将使用User-Agent伪装、代理IP、请求频率控制反爬虫技术,动态页面处理和验证码识别将在后续的文章中使用

3.1、爬取目标

豆瓣电影Top250排行榜

爬取字段: 排名、电影名、评分、评价人数、制片国家、电影类型、上映时间、主演、影片链接

结果展示:

在这里插入图片描述

豆瓣:https://www.douban.com/

豆瓣电影:https://movie.douban.com/

豆瓣电影Top250:https://movie.douban.com/top250

在这里插入图片描述

3.2、库(模块)简介

import numpy as np
import pandas as pd
import requests
from bs4 import BeautifulSoup
from lxml import etree
import re
import time

相关模块的详细介绍及使用见文章:Python网络爬虫基本库

3.3、翻页分析

在这里插入图片描述
通过观察浏览器地址栏,发现页面间网址存在如下规律:

第1页:https://movie.douban.com/top250?start=0&filter=

第2页:https://movie.douban.com/top250?start=25&filter=

第3页:https://movie.douban.com/top250?start=50&filter=

… …

# 构造每页的网页链接
urls = [rf'https://movie.douban.com/top250?start={
     str(i * 25)}&filter=' for i in range(10)]

3.4、发送请求

def get_html_str(url: str):
    # 请求头模拟浏览器
    headers = {
   'User-Agent': 'Mozilla/5.0'}
    # 代理IP
    proxies = {
   "http": "http://183.134.17.12:9181"}
    # 发送请求
    resp = requests.get(url, headers=headers, proxies=proxies)
    # 获取网页源代码
    html_str = resp.content.decode()
    return html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1063896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python+requests+unittest+excel】实现接口自动化测试框架

一、框架结构: 工程目录 二、Case文件设计 三、基础包 base3.1 封装get/post请求(runmethon.py) 1 import requests2 import json3 class RunMethod:4 def post_main(self,url,data,headerNone):5 res None6 if header …

Javascript文件上传

什么是文件上传 文件上传包含两部分, 一部分是选择文件,包含所有相关的界面交互。一部分是网络传输,通过一个网络请求,将文件的数据携带过去,传递到服务器中,剩下的,在服务器中如何存储&#xf…

TL-ER3220G端口映射设置

1、打开IE浏览器或其它浏览器,在地址栏输入192.168.1.1登录路由器的Web管理界面; 2、打开后弹出密码输入框,输入路由器的用户名和密码,出厂默认值为admin/admin,成功登录后将看到路由器的系统状态信息; 3、…

2023 年 Web 安全最详细学习路线指南,从入门到入职(含书籍、工具包)【建议收藏】

第一个方向:安全研发 你可以把网络安全理解成电商行业、教育行业等其他行业一样,每个行业都有自己的软件研发,网络安全作为一个行业也不例外,不同的是这个行业的研发就是开发与网络安全业务相关的软件。 既然如此,那其…

MyBatisPlus(十三)逻辑查询:and / or

说明 逻辑查询,对应SQL语句中的多个查询条件进行逻辑组合,包括 and 和 or。 逻辑 “与” :and 默认情况下,多个查询条件,就是使用的逻辑与(and)连接,并不需要再使用 and() 函数。…

modelize.ai - 小记

文章目录 关于 关于 官网:https://www.beta.modelize.ai Modelize.ai是一个AI agents和teams的创作平台,通过结合多元的agents以及工作流的衔接,让AI agents之间高效协同,达到一键式完成复杂工作的效果。 公司的愿景是让AI打工人…

从零开始学习线性回归:理论、实践与PyTorch实现

文章目录 🥦介绍🥦基本知识🥦代码实现🥦完整代码🥦总结 🥦介绍 线性回归是统计学和机器学习中最简单而强大的算法之一,用于建模和预测连续性数值输出与输入特征之间的关系。本博客将深入探讨线性…

Texifier 专业打造,让你的LaTeX编辑更高效!

作为LaTeX用户,你一定知道寻找一款优秀的编辑工具是多么重要。而Texifier(原Texpad)就是你在Mac上寻找的完美解决方案!它是一款专业的LaTeX编辑工具,为你带来高效、便捷的编辑体验。 Texifier拥有丰富的功能&#xff…

Linux网络编程系列之UDP协议编程

一、什么是UDP协议 UPD协议(User Datagram Protocol,用户数据报协议)是Internet协议族中的一个无连接协议,属于传输层,它不保证数据传输的可靠性或完整性,只是把应用程序发给网络层的数据封装成数据包进行传…

VL53L5CX驱动开发(1)----驱动TOF进行区域检测

VL53L5CX驱动开发----1.驱动TOF进行区域检测 闪烁定义视频教学样品申请源码下载主要特点硬件准备技术规格系统框图应用示意图区域映射生成STM32CUBEMX选择MCU 串口配置IIC配置X-CUBE-TOF1串口重定向代码配置Tera Term配置演示结果 闪烁定义 VL53L5CX是一款先进的飞行感应&…

【C语言】利用数组处理批量数据(字符数组)

前言:前面已经介绍了,字符数据是以字符的ASCII代码存储在存储单元中的,一般占一个字节。由于ASCII代码也属于整数形式,因此在C99标准中,把字符类型归纳为整型类型中的一种。 💖 博主CSDN主页:卫卫卫的个人主页 &#x…

使用ebpf 监控linux内核中的nat转换

1.简介 Linux NAT(Network Address Translation)转换是一种网络技术,用于将一个或多个私有网络内的IP地址转换为一个公共的IP地址,以便与互联网通信。 在k8s业务场景中,业务组件之间的关系十分复杂. 由于 Kubernete…

浅谈在操控器类中,为何要通过osgGA::CameraManipulator的逆矩阵改变视点位置

在osg代码目录下的include\osgGA目录存放了很多osg自带的操控器类,这些操控器类都派生自osgGA::CameraManipulator,而这个CameraManipulator又派生自osgGA::GUIEventHandler,可见其本质上是个事件处理类。因此它首先会接收事件,比…

月薪20k的软件测试工程师都要具备什么能力?你跟大佬的差距在哪?

第一,强大的业务能力:很熟悉业务流程,熟悉业务模块、数据、架构,测试所需资源。了解测试所需时间。 第二,发现bug能力:一般问题发现的能力,隐性问题发现能力,连带问题发现能力&…

专为实现最高性能和效率而设计,SQN3242UCKGTA、SQN3220SC、SQN3220 LTE-A Cat 6 模块【SKY85735-11射频前端】

一、SQN3242UCKGTA、SQN3220SC、SQN3220 LTE-A Cat 6 模块 1、简介 Sequans 的 Cassiopeia 是 Cat4 和 Cat6 LTE-Advanced 平台系列,包括集成了高性能网络和应用 CPU 的 SQN3220 Cat6 基带 SoC 和 SQN3220SC Cat4 基带 SoC、Sequans 的 SQN3242 LTE 优化收发器、经…

Pyhon-每日一练(1)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…

大华智慧园区前台任意文件上传(1day)

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 漏洞简介 大华智慧园区综合管理平台是一个集智能化、信息化、网络化、…

3D人脸生成的论文

一、TECA 1、论文信息 2、开源情况:comming soon TECA: Text-Guided Generation and Editing of Compositional 3D AvatarsGiven a text description, our method produces a compositional 3D avatar consisting of a mesh-based face and body and NeRF-based ha…

总结三:计算机网络面经

文章目录 1、简述静态路由和动态路由?2、说说有哪些路由协议,都是如何更新的?3、简述域名解析过程,本机如何干预域名解析?4、简述 DNS 查询服务器的基本流程是什么?DNS 劫持是什么?5、简述网关的…

CCS安装和运行TMS320F28004x第一个程序

1. CCS安装 TI 的MCU或者DSP,官方的集成开发环境是 Code Composer Studio™ ,要开发TI的芯片,首先需要安装 CCS 环境。 CCS 软件可以到下面的 TI 官网下载: https://www.ti.com.cn/tool/cn/CCSTUDIO 下载完之后,点击…