You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Scrapy爬取带安全验证的9anime.gs网站失败求助

爬取9anime.gs的反爬绕过方案

核心问题分析

网站的安全验证大概率基于浏览器环境检测(比如JS支持情况、Canvas/WebGL指纹、浏览器特征识别等),Scrapy默认是无JS渲染的纯HTTP请求,自然会被拦截。仅用fake-useragent和Cookies无效,是因为验证逻辑不局限于这两个维度,而是需要完整的浏览器运行上下文。

具体解决方案

1. 结合JS渲染引擎模拟真实浏览器

集成scrapy-playwright或scrapy-selenium,让请求在真实浏览器环境中执行,自动完成验证跳转:

  • 安装依赖:pip install scrapy-playwright
  • 在Scrapy项目的settings.py中配置:
    DOWNLOAD_HANDLERS = {
        "http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
        "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
    }
    PLAYWRIGHT_LAUNCH_OPTIONS = {
        "headless": True,  # 调试时可设为False查看浏览器行为
        "args": ["--no-sandbox", "--disable-setuid-sandbox"],
    }
    
  • 爬虫代码示例:
    import scrapy
    from scrapy_playwright.page import PageCoroutine
    
    class OshiNoKoSpider(scrapy.Spider):
        name = "oshi_no_ko"
        start_urls = ["https://9anime.gs/filter?keyword=oshi+n+oko"]
    
        def start_requests(self):
            for url in self.start_urls:
                yield scrapy.Request(
                    url,
                    meta={
                        "playwright": True,
                        "playwright_page_coroutines": [
                            PageCoroutine("wait_for_selector", "div.film_list-wrap"),  # 等待目标内容加载完成
                        ],
                    },
                )
    
        def parse(self, response):
            # 示例:提取影视条目信息
            for item in response.css("div.flw-item"):
                yield {
                    "title": item.css("div.film-name a::text").get(),
                    "detail_url": item.css("div.film-name a::attr(href)").get(),
                }
    

2. 手动分析验证流程(维护成本高)

如果不想用渲染引擎,可通过浏览器DevTools抓包拆解验证逻辑:

  • 记录从验证页到目标页的所有请求,包括加载的验证脚本、提交验证的API请求(通常是POST,携带指纹类参数)、跳转时设置的Cookie/Token
  • 在Scrapy中模拟构造这些请求的参数(比如Canvas生成的指纹、完整浏览器UA、请求头特殊字段),但这种方法会因网站更新验证规则快速失效,仅适合临时需求。

3. 基础防封措施

  • 设置合理下载延迟:在settings.py中添加DOWNLOAD_DELAY = 3,避免高频请求触发IP封禁
  • 搭配代理IP池,分散请求来源
  • 避免固定请求模板,随机化部分请求头字段(除UA外,可调整Accept、Accept-Language等)

内容的提问来源于stack exchange,提问作者Inan Muhtasim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:45:04