Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python爬虫如何应对贝壳网的IP封禁与人机验证?

Python爬虫如何应对贝壳网的IP封禁与人机验证?

作者头像
小白学大数据
发布于 2025-06-08 00:29:19
发布于 2025-06-08 00:29:19
6000
代码可运行
举报
文章被收录于专栏:python进阶学习python进阶学习
运行总次数:0
代码可运行

1. 引言

数据采集领域,爬虫工程师常常面临目标网站的反爬机制,如IP封禁、人机验证(如滑块验证、点击验证、短信验证等)。贝壳网作为国内知名的房产交易平台,其反爬策略较为严格,包括但不限于:

  • IP封禁:频繁请求会导致IP被拉黑,无法继续访问。
  • 人机验证:如滑块验证、短信验证等,阻止自动化工具访问。
  • 动态Token:关键请求需要携带动态生成的Token,防止直接模拟请求。

2. 应对IP封禁的策略

2.1 使用代理IP池

频繁请求同一IP容易被封禁,因此需要采用 代理IP池 进行轮换。

代码实现:使用代理IP请求贝壳网
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
from fake_useragent import UserAgent

# 代理IP示例(实际使用时建议从代理池API获取)
PROXIES = {
    "http": "http://123.123.123.123:8888",
    "https": "http://123.123.123.123:8888"
}

headers = {
    "User-Agent": UserAgent().random
}

url = "https://www.ke.com"

try:
    response = requests.get(url, headers=headers, proxies=PROXIES, timeout=5)
    print(response.status_code)
except Exception as e:
    print("请求失败:", e)
代理池优化建议
  1. 多IP轮换:每次请求更换不同代理。
  2. IP质量检测:定期检测代理IP是否可用。
  3. 使用高匿代理:避免被识别为代理流量。
2.2 请求频率控制

即使使用代理IP,过高频率的请求仍可能触发反爬。因此需要:

  • 随机延迟:在请求之间加入 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">time.sleep(random.uniform(1, 3))</font>**
  • 降低并发量:避免多线程过高并发。
代码示例:随机延迟+代理IP
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time
import random

def crawl_with_delay(url):
    try:
        time.sleep(random.uniform(1, 3))  # 随机延迟1~3秒
        response = requests.get(url, headers=headers, proxies=PROXIES)
        return response.text
    except Exception as e:
        print("请求失败:", e)
        return None

3. 绕过贝壳网的人机验证

贝壳网常见的人机验证方式包括:

  1. 滑块验证(如极验验证)
  2. 点击验证(如点选图中文字)
  3. 短信验证(登录时需要手机验证码
3.1 使用Selenium模拟浏览器操作

对于滑块验证,可通过 Selenium + ChromeDriver 模拟人工滑动。

代码实现:自动滑动验证
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

# 配置Chrome无头模式(可选)
options = webdriver.ChromeOptions()
options.add_argument("--headless")  # 无界面模式
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(options=options)
driver.get("https://www.ke.com")

# 找到滑块元素并模拟拖动
slider = driver.find_element_by_css_selector(".slider")  # 替换为实际滑块元素
action = ActionChains(driver)
action.click_and_hold(slider).move_by_offset(300, 0).release().perform()

time.sleep(2)
driver.quit()
优化方案
  • 轨迹模拟:使用 **<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">move_by_offset</font>** 分阶段滑动,模拟真人操作。
  • 手动介入:遇到复杂验证时,可暂停脚本手动完成验证。
3.2 OCR识别验证码

对于图形验证码(如文字点选),可使用 OCR(光学字符识别) 技术自动识别。

代码示例:OCR识别验证码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import pytesseract
from PIL import Image
import requests
from io import BytesIO

# 下载验证码图片
response = requests.get("https://www.ke.com/captcha.jpg")
img = Image.open(BytesIO(response.content))
text = pytesseract.image_to_string(img)
print("识别结果:", text)
优化方案
  • 深度学习模型:使用CNN训练专用验证码识别模型(如CRNN)。
  • 第三方打码平台:如超级鹰、联众打码。

4. 综合方案:代理IP + Selenium + OCR

结合上述技术,完整流程如下:

  1. 使用代理IP池 轮换请求,避免封禁。
  2. 控制请求频率,降低被检测风险。
  3. 遇到验证码时,使用Selenium模拟或OCR识别。
完整代码示例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
from selenium import webdriver
import time
import random
from selenium.webdriver.chrome.options import Options

# 16yun代理信息
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

# 代理IP池(包含认证信息)
PROXIES = [
    f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}",
    # 可以添加更多代理
]

def get_with_proxy(url):
    proxy = random.choice(PROXIES)
    try:
        # 设置代理
        proxies = {
            "http": proxy,
            "https": proxy
        }
        response = requests.get(url, proxies=proxies, timeout=5)
        if "验证码" in response.text:
            return handle_captcha(url)  # 处理验证码
        return response.text
    except Exception as e:
        print("请求失败:", e)
        return None

def handle_captcha(url):
    # 配置Chrome代理
    chrome_options = Options()
    
    # 添加代理认证
    proxy_auth = f"{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
    chrome_options.add_argument(f'--proxy-server=http://{proxy_auth}')
    
    # 其他Chrome配置
    chrome_options.add_argument("--disable-blink-features=AutomationControlled")
    # chrome_options.add_argument("--headless")  # 无头模式
    
    driver = webdriver.Chrome(options=chrome_options)
    driver.get(url)
    time.sleep(2)
    
    # 这里添加滑块/验证码处理逻辑
    # 示例:打印页面标题
    print("当前页面标题:", driver.title)
    
    page_source = driver.page_source
    driver.quit()
    return page_source

if __name__ == "__main__":
    data = get_with_proxy("https://www.ke.com")
    if data:
        print(data[:500])  # 打印部分内容

5. 结论

应对贝壳网的IP封禁和人机验证,核心策略包括:

  1. 代理IP池:避免单一IP被封。
  2. 请求频率控制:模拟人类操作节奏。
  3. Selenium自动化:处理滑块、点击验证码。
  4. OCR/打码平台:识别复杂验证码。

未来,随着反爬技术升级,可能需要更高级的方案,如:

  • 深度学习破解验证码
  • 浏览器指纹伪装
  • 分布式爬虫架构

合理使用这些技术,可以在合规的前提下高效采集数据。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python爬虫如何应对贝壳网的IP封禁与人机验证?
在数据采集领域,爬虫工程师常常面临目标网站的反爬机制,如IP封禁、人机验证(如滑块验证、点击验证、短信验证等)。贝壳网作为国内知名的房产交易平台,其反爬策略较为严格,包括但不限于:
小白学大数据
2025/06/04
1890
无头浏览器技术:Python爬虫如何精准模拟搜索点击
无头浏览器是一种没有图形用户界面(GUI)的浏览器,它通过程序控制浏览器内核(如Chromium、Firefox)执行页面加载、JavaScript渲染、表单提交等操作。由于不渲染可视化界面,无头浏览器在服务器环境下运行更高效。
小白学大数据
2025/06/06
1990
Python爬虫+代理IP+Header伪装:高效采集亚马逊数据
在当今大数据时代,电商平台(如亚马逊)的数据采集对于市场分析、竞品监控和价格追踪至关重要。然而,亚马逊具有严格的反爬虫机制,包括IP封禁、Header检测、验证码挑战等。
小白学大数据
2025/05/07
1740
Python爬虫+代理IP+Header伪装:高效采集亚马逊数据
浅谈Python网络爬虫应对反爬虫的技术对抗
在当今信息时代,数据是非常宝贵的资源。而作为一名专业的 Python 网络爬虫程序猿,在进行网页数据采集时经常会遭遇到各种针对爬虫行为的阻碍和限制,这就需要我们掌握一些应对反爬机制的技术手段。本文将从不同层面介绍如何使用 Python 进行网络爬虫,并提供相应解决方案以及实际操作价值高、具有专业度强 的代码示例。
华科云商小徐
2023/08/24
5080
Python+Selenium爬虫:豆瓣登录反反爬策略解析
1. 引言 在当今互联网时代,数据抓取(爬虫)技术广泛应用于数据分析、市场调研、自动化测试等领域。然而,许多网站采用动态加载技术(如Ajax、React、Vue.js等框架)来渲染页面,传统的requests库无法直接获取动态生成的内容。这时,Selenium成为解决动态页面爬取的重要工具。 豆瓣作为一个典型的动态加载网站,其登录页面涉及表单提交、动态验证码、Ajax请求等复杂交互。本文将通过Python + Selenium,详细介绍如何模拟登录豆瓣,并处理动态加载的登录页面。
小白学大数据
2025/05/14
2380
Python爬虫之解决浏览器等待与代理隧道问题
作为专业爬虫程序员,我们往往需要应对一些限制性挑战,比如浏览器等待和使用代理隧道。在Python爬虫开发中,这些问题可能会导致我们的爬虫受阻。本文将为你分享解决这些问题的方案,帮助你顺利应对浏览器等待和代理隧道的挑战!
华科云商小徐
2023/08/14
3610
Python爬虫多次请求后被要求验证码的应对策略
在互联网数据采集领域,Python爬虫是一种强大的工具,能够帮助我们高效地获取网页数据。然而,在实际应用中,许多网站为了防止恶意爬取,会在检测到频繁请求时要求用户输入验证码。这无疑给爬虫的正常运行带来了挑战。本文将详细介绍Python爬虫在多次请求后被要求验证码时的应对策略,并提供具体的实现代码。
小白学大数据
2025/04/18
2580
Python爬虫多次请求后被要求验证码的应对策略
【学习笔记】Python爬虫
URL由协议、主机名、端口、路径、参数、锚点 URLError\HTTPError 后者时前者的子类 用try-except捕获异常
Livinfly
2022/10/26
2.1K0
Python爬虫+代理IP+Header伪装:高效采集亚马逊数据
在当今大数据时代,电商平台(如亚马逊)的数据采集对于市场分析、竞品监控和价格追踪至关重要。然而,亚马逊具有严格的反爬虫机制,包括IP封禁、Header检测、验证码挑战等。
小白学大数据
2025/05/06
2190
如何使用Python爬虫处理多种类型的滑动验证码
背景介绍: 在网络爬虫的世界中,滑动验证码是一种常见的反爬机制。它通过要求用户在网页上滑动滑块来验证身份,从而阻止自动化程序的访问。对于开发者来说,如何在Python爬虫中应对多种类型的滑动验证码成为了一个巨大的挑战。本文将分享一些观察和思考,以及一些建议,帮助你处理各种类型的滑动验证码。
小白学大数据
2023/08/28
1.5K0
2025python实战:利用海外代理IP验证广告投放效果
你有没有遇到这种场景:团队投放了一个海外广告,明明预算烧了不少,却心里七上八下,担心广告到底在目标区域是否好好展示?可能东南亚的消费者该看到折扣广告,美国那边应该秀新品发布……但问题是,如果你不在海外,怎么验证这些广告在其他国家的人是否能看到,广告被正常展示呢?
阿秋数据采集
2025/05/29
1130
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
猫头虎
2025/06/02
2.2K0
用 Python 写你的第一个爬虫:小白也能轻松搞定数据抓取(超详细包含最新所有Python爬虫库的教程)
Python使用爬虫ip爬取动态网页
写爬虫很难?在我看来,写爬虫需要具备一定的编程基础和网络知识,但并不需要非常高深的技术。在学习爬虫的过程中,我发现最重要的是掌握好两个点:一是如何分析网页结构,二是如何处理数据。对于第一个点,我们需要了解HTML、CSS、JavaScript等前端知识,以及使用开发者工具等工具进行网页分析;对于第二个点,我们需要了解正则表达式、XPath、BeautifulSoup等数据处理工具。此外,还需要注意反爬虫机制和法律法规等方面的问题。总之,学习爬虫需要耐心和实践,不断尝试和总结,相信只要坚持下去,一定能够取得不错的成果。
华科云商小徐
2023/12/04
2800
使用Python和BeautifulSoup进行网页爬虫与数据采集
在互联网时代,数据是最宝贵的资源之一,而获取数据的能力则是数据分析、人工智能等领域的基础技能。本文将深入探讨如何使用Python和BeautifulSoup库进行网页爬虫与数据采集。我们将从基本概念入手,逐步展示如何搭建一个简单而功能强大的网页爬虫,并通过具体的代码实例引导您完成数据采集任务。
一键难忘
2024/10/14
1.3K0
Linux中Chrome无界模式动态代理IP的配置(Selenium)
Python 爬虫设置代理的方式有很多, 比如给urlib、request、selenium等方式设置代理,这部分的细节代码在网上一搜一大堆。那么问题来了,比如你要抓取淘宝或模拟验证码操作登录,是不是要采用这种方式(Selenium + Chromedriver + Chrome)实现呢?
蒋老湿
2020/06/28
4.3K0
Linux中Chrome无界模式动态代理IP的配置(Selenium)
爬虫入门指南(3):Python网络请求及常见反爬虫策略应对方法
在当今信息时代,网络请求已成为了人们获取数据的重要方式。然而,同时也产生了大量的爬虫行为,这些爬虫可能会对网站的正常运行造成影响,甚至会引发一系列的反爬虫措施。本文将详细介绍网络请求与反爬虫的知识点,以及如何使用Python进行网络请求和应对常见的反爬虫策略。
全栈若城
2024/02/29
5390
爬虫入门指南(3):Python网络请求及常见反爬虫策略应对方法
Python爬虫多次请求后被要求验证码的应对策略
在互联网数据采集领域,Python爬虫是一种强大的工具,能够帮助我们高效地获取网页数据。然而,在实际应用中,许多网站为了防止恶意爬取,会在检测到频繁请求时要求用户输入验证码。这无疑给爬虫的正常运行带来了挑战。本文将详细介绍Python爬虫在多次请求后被要求验证码时的应对策略,并提供具体的实现代码。
小白学大数据
2025/04/17
1580
Scrapy结合Selenium实现搜索点击爬虫的最佳实践
动态网页通过JavaScript等技术在客户端动态生成内容,这使得传统的爬虫技术(如requests和BeautifulSoup)无法直接获取完整的内容。具体挑战包括:
小白学大数据
2025/04/14
2180
Python+Selenium爬虫:豆瓣登录反反爬策略解析
在当今互联网时代,数据抓取(爬虫)技术广泛应用于数据分析、市场调研、自动化测试等领域。然而,许多网站采用动态加载技术(如Ajax、React、Vue.js等框架)来渲染页面,传统的**<font style="color:rgb(64, 64, 64);background-color:rgb(236, 236, 236);">requests</font>**库无法直接获取动态生成的内容。这时,Selenium成为解决动态页面爬取的重要工具。
小白学大数据
2025/05/15
1700
Python+Selenium爬虫:豆瓣登录反反爬策略解析
python爬虫遇到IP被封的情况,怎么办?
代理服务的介绍: 我们在做爬虫的过程中经常最初爬虫都正常运行,正常爬取数据,一切看起来都是美好,然而一杯茶的功夫就出现了错误。 如:403 Forbidden错误,“您的IP访问频率太高”错误,或者跳出一个验证码让我们输入,之后解封,但过一会又出现类似情况。 出现这个现象的原因是因为网站采取了一些反爬中措施,如:服务器检测IP在单位时间内请求次数超过某个阀值导致,称为封IP。 为了解决此类问题,代理就派上了用场,如:代理软件、付费代理、ADSL拨号代理,以帮助爬虫脱离封IP的苦海。 测试HTTP请求及响应的
python学习教程
2019/11/01
4.3K0
python爬虫遇到IP被封的情况,怎么办?
推荐阅读
相关推荐
Python爬虫如何应对贝壳网的IP封禁与人机验证?
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档