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

使用Python requests爬取网站时如何绕过此类计数式付费墙?

问题根源

这类靠新开无痕窗口就能重置免费额度的付费墙,核心判断逻辑是基于会话Cookie存储免费文章阅读计数:新无痕窗口每次启动都会生成完全独立的空Cookie环境,无历史访问记录,网站会判定为全新访客,分配单篇免费阅读额度。
用requests请求时如果复用同一会话Cookie,第一次请求后网站就会把已读计数写入返回的Cookie,后续请求携带计数超标的Cookie发起访问,就会直接返回订阅提示。

可直接落地的解决方法
  • 不要使用requests.Session()维持会话,Session对象会自动持久化、携带所有历史请求的Cookie,正好触发付费墙的计数规则。每次发起文章请求时都使用全新的、无历史Cookie的请求上下文,等价于手动新开一个无痕窗口。
  • 每次请求配置真实的浏览器User-Agent,不要用requests默认的python-requests/xx.xx.xx标识,避免被直接识别为爬虫拦截。
  • 如果重置Cookie后依然触发付费墙,可以在每次请求之间加2-5秒的随机间隔,偶尔轮换请求头里的User-Agent,绕过简单的IP维度短时间访问频次校验。
参考实现代码
import requests
import time
import random
from bs4 import BeautifulSoup

# 待爬取的文章列表
article_urls = [
    "替换为你的目标文章链接1",
    "替换为你的目标文章链接2",
    "替换为你的目标文章链接3"
]

# 轮换UA池,模拟不同的无痕窗口环境
user_agents = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"
]

for url in article_urls:
    # 每次请求随机选UA,不带任何历史Cookie
    headers = {"User-Agent": random.choice(user_agents)}
    resp = requests.get(url, headers=headers, timeout=10)
    resp.encoding = resp.apparent_encoding
    
    soup = BeautifulSoup(resp.text, "html.parser")
    # 在这里插入你的正文提取逻辑
    # 例:print(soup.select_one("article .content").text.strip())

    # 随机间隔,避免触发频次拦截
    time.sleep(random.uniform(2,5))

注意:不要手动把上一次请求响应里的Set-Cookie内容传入下一次请求,否则会重新带上阅读计数标记,导致付费墙触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:31:02