​python爬虫——爬虫伪装和反“反爬”

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

  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 = ‘www.example.com

发送请求

response = requests.get(url, headers=headers)

输出响应内容

print(response.text)

  1. 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 = ‘www.example.com

发送请求

response = requests.get(url, proxies=proxies)

输出响应内容

print(response.text)

  1. 随机访问时间间隔 频繁访问服务器容易被识别为机器人,因此我们需要模拟人类访问网站的行为,随机设置访问时间间隔。使用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 = ‘www.example.com

随机访问时间间隔

time.sleep(random.randint(0, 3))

发送请求

response = requests.get(url, headers=headers)

输出响应内容

print(response.text)

  1. 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 = ‘www.example.com

发送请求

response = requests.get(url, headers=headers, cookies=cookies)

输出响应内容

print(response.text)

  1. 使用验证码识别库 有些网站需要进行验证码识别,我们可以使用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 = ‘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)

  1. 动态解析页面 有些网站会在前端使用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 = ‘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()

  1. 多账号轮流使用 如果一个账号频繁访问被封禁,我们可以使用多个账号轮流访问网站。这里我们使用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 = ‘www.example.com/login’ response = requests.post(login_url, data=data)

输出响应内容

print(response.text)

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

---------------------------END---------------------------

题外话

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

👉CSDN大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值