前言
爬虫伪装和反“反爬”是在爬虫领域中非常重要的话题。伪装可以让你的爬虫看起来更像普通的浏览器或者应用程序,从而减少被服务器封禁的风险;反“反爬”则是应对服务器加强的反爬虫机制。下面将详细介绍一些常见的伪装和反反爬技巧,并提供对应的代码案例。

1. User-Agent伪装
User-Agent是HTTP请求头的一部分,其中包含了浏览器、手机等使用的应用程序的信息。在爬虫中,使用默认的User-Agent,或者使用爬虫常用的User-Agent,容易被服务器识别为机器人,因此我们需要伪装User-Agent。使用Python中的requests库可以方便地添加User-Agent头。

import requests

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求URL
url = 'https://www.example.com'

# 发送请求
response = requests.get(url, headers=headers)

# 输出响应内容
print(response.text)

2. IP代理
单个IP频繁访问服务器容易被封禁,因此我们可以使用IP代理来访问网站。IP代理有免费和付费的,这里我们使用免费的IP代理。使用Python中的requests库可以方便地设置代理服务器。

import requests

# 设置代理服务器
proxies = {
    'http': 'http://127.0.0.1:1080',
    'https': 'https://127.0.0.1:1080'
}

# 请求URL
url = 'https://www.example.com'

# 发送请求
response = requests.get(url, proxies=proxies)

# 输出响应内容
print(response.text)

3. 随机访问时间间隔
频繁访问服务器容易被识别为机器人,因此我们需要模拟人类访问网站的行为,随机设置访问时间间隔。使用Python中的time库可以方便地设置访问时间间隔。

import requests
import time
import random

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求URL
url = 'https://www.example.com'

# 随机访问时间间隔
time.sleep(random.randint(0, 3))

# 发送请求
response = requests.get(url, headers=headers)

# 输出响应内容
print(response.text)

4. Cookie伪装
有些网站需要登录才能访问,我们需要在访问网站时携带cookie,以模拟登录状态。使用Python中的requests库可以方便地设置cookie。

import requests

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 设置cookie
cookies = {
    'sessionid': 'xxxx'
}

# 请求URL
url = 'https://www.example.com'

# 发送请求
response = requests.get(url, headers=headers, cookies=cookies)

# 输出响应内容
print(response.text)

5. 使用验证码识别库
有些网站需要进行验证码识别,我们可以使用OCR等技术进行识别。这里我们使用Python中的Tesseract-OCR库对验证码进行识别。

import requests
import pytesseract
from PIL import Image

# 设置User-Agent头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 请求验证码图片
url = 'https://www.example.com/captcha.png'
response = requests.get(url, headers=headers)

# 保存验证码图片
with open('captcha.png', 'wb') as f:
    f.write(response.content)

# 对验证码图片进行识别
captcha_image = Image.open('captcha.png')
captcha_text = pytesseract.image_to_string(captcha_image)

# 输出验证码文本
print(captcha_text)

6. 动态解析页面
有些网站会在前端使用JS异步加载数据,此时需要使用Selenium等工具对页面进行动态解析。这里我们使用Python中的Selenium库来模拟浏览器访问网站。

from selenium import webdriver

# 设置User-Agent头
options = webdriver.ChromeOptions()
options.add_argument(
    'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3')

# 请求URL
url = 'https://www.example.com'

# 使用Selenium打开网页
driver = webdriver.Chrome(options=options)
driver.get(url)

# 执行JS代码
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# 获取响应内容
response = driver.page_source

# 输出响应内容
print(response)

# 关闭浏览器
driver.quit()

7. 多账号轮流使用
如果一个账号频繁访问被封禁,我们可以使用多个账号轮流访问网站。这里我们使用Python中的random库来随机选择账号。

import requests
import random

# 用户列表
users = [
    {'username': 'user1', 'password': 'password1'},
    {'username': 'user2', 'password': 'password2'},
    {'username': 'user3', 'password': 'password3'}
]

# 随机选择一个账号
user = random.choice(users)

# 构造登录信息
data = {
    'username': user['username'],
    'password': user['password']
}

# 请求登录URL
login_url = 'https://www.example.com/login'
response = requests.post(login_url, data=data)

# 输出响应内容
print(response.text)

总结
总的来说,伪装的目的是让爬虫看起来更像人类行为,反“反爬”的目的是应对复杂的反爬虫机制。在实际爬虫项目中,需要根据具体情况选择合适的伪装和反“反爬”技巧。

​python爬虫——爬虫伪装和反“反爬”的更多相关文章

  1. python网络爬虫 - 如何伪装逃过反爬虫程序

    有的时候,我们本来写得好好的爬虫代码,之前还运行得Ok, 一下子突然报错了. 报错信息如下: Http 800 Internal internet error 这是因为你的对象网站设置了反爬虫程序,如 ...

  2. python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题

    python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题 一丶爬虫概述       通过编写程序'模拟浏览器'上网,然后通 ...

  3. 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制

    第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用.自动限速.自定义spider的settings,对抗反爬机制 cookie禁用 就是在Scrapy的配置文件set ...

  4. 第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图

    第三百四十五节,Python分布式爬虫打造搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图 1.基本概念 2.反爬虫的目的 3.爬虫和反爬的对抗过程以及策略 scra ...

  5. python高级—— 从趟过的坑中聊聊爬虫、反爬以及、反反爬,附送一套高级爬虫试题

    前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...

  6. 二十八 Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制

    cookie禁用 就是在Scrapy的配置文件settings.py里禁用掉cookie禁用,可以防止被通过cookie禁用识别到是爬虫,注意,只适用于不需要登录的网页,cookie禁用后是无法登录的 ...

  7. 爬取豆瓣电影储存到数据库MONGDB中以及反反爬虫

    1.代码如下: doubanmoive.py # -*- coding: utf-8 -*- import scrapy from douban.items import DoubanItem cla ...

  8. 开发记录_自学Python写爬虫程序爬取csdn个人博客信息

    每天刷开csdn的博客,看到一整个页面,其实对我而言,我只想看看访问量有没有上涨而已... 于是萌生了一个想法: 想写一个爬虫程序把csdn博客上边的访问量和评论数都爬下来. 打算通过网络各种搜集资料 ...

  9. 爬虫(二)Python网络爬虫相关基础概念、爬取get请求的页面数据

    什么是爬虫 爬虫就是通过编写程序模拟浏览器上网,然后让其去互联网上抓取数据的过程. 哪些语言可以实现爬虫    1.php:可以实现爬虫.php被号称是全世界最优美的语言(当然是其自己号称的,就是王婆 ...

  10. Python网络爬虫第三弹《爬取get请求的页面数据》

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

随机推荐

  1. [Kotlin Tutorials 21] 协程的取消

    协程的取消 本文讨论协程的取消, 以及实现时可能会碰到的几个问题. 本文属于合辑: https://github.com/mengdd/KotlinTutorials 协程的取消 取消的意义: 避免资 ...

  2. [Qt开发]一口气搞懂串口通信

    好多小鳄鱼 一.关于串口通信: Qt的确有自己的串口通信类,就是QSerialPort,但是我们在使用过程中因为要更加定制化的使用串口通信类减小开发的难度,所以我们会提供一个串口通信类,也就是这个Se ...

  3. 你的专属音乐生成器「GitHub 热点速览」

    如果你制作视频,一定会碰到配乐的问题.虽然网上找的一些免费配乐能勉强满足需求,但是如果有个专属的配乐生成器,根据你的视频画面生成对应配乐是不是不错呢?audiocraft 也许能帮助你,把相关画面用文 ...

  4. RDD练习:词频统计

    一.词频统计: 1.读文本文件生成RDD lines lines=sc.textFile("file:///home/hadoop/word.txt") #读取本地文件 lines ...

  5. 基于VAE的风险分析:基于历史数据的风险分析、基于实时数据的风险分析

    目录 引言 随着人工智能和机器学习的发展,风险分析已经成为许多行业和组织中不可或缺的一部分.传统的基于经验和规则的风险分析方法已经难以满足现代风险分析的需求,因此基于VAE的风险分析方法逐渐成为了主流 ...

  6. React组件三大属性state,props,refs

    1. React组件定义 1.1 函数组件(Function Components) 函数组件是一种简单的定义组件的方式,通过一个JavaScript函数来定义组件.函数接收一个props对象作为参数 ...

  7. PRF评价

    PRF评价指标: 精确率P:预测结果正类数量占全部结果的比率: P= $\frac{TP}{TP+FP}$ TP:预测为真且实际为真,FP为预测真实际为假. 召回率R:在所有正类样本中,能回想到的比例 ...

  8. Python 一大坑,配置文件中字典引用问题(拷贝)。

    大坑 +1 python 配置文件中字典引用问题 最近在开发系统时发现一个传奇的BUG, 用户未登录就可进入系统内,而且含有真实身份信息. 此问题困扰多时,反复debug.由于找不到问题原因,复现具有 ...

  9. 可视化容器管理工具-portainer.io使用

    续docker日常使用指南 背景 当我们开始使用docker后,我们的机器上镜像和容器会越来越多,或者有时候我们有多台开发机的时候,单纯使用命令行去管理镜像和容器就变得麻烦了,这时,我们就可以选择一些 ...

  10. ERP开发流程

    一.使用Xshell连线执行r.r adzi140 或 助记码r.t 都可以打开数据表设计器 表格建完后,DBA前三个需要点一下,如果表格显示需要表格重建,点最后一个,表格新建完成后,记得点击执行异动 ...