如何使用Requests以隐身模式打开URL(无需Selenium/Playwright)
如何用Requests获取Medium完整文章内容
Medium会根据请求的特征判断访问来源,你用Requests只能拿到一半内容,是因为默认的请求头和隐身浏览器的请求特征不匹配,Medium识别后限制了内容展示。
Requests本身没有“隐身模式”功能,但可以通过模拟隐身浏览器的请求头绕过这个限制,具体操作如下:
- 打开浏览器隐身模式,访问目标文章,用开发者工具的Network面板查看真实请求的头信息,重点提取
User-Agent、Accept、Accept-Language这些核心字段; - 在Requests请求中带上这些自定义请求头,同时确保不携带任何Cookie(隐身模式下浏览器无历史Cookie)。
修改后的代码示例:
from bs4 import BeautifulSoup import requests # 模拟隐身Chrome的请求头,可根据自己浏览器的实际请求头调整 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "Accept-Language": "zh-CN,zh;q=0.9", "Upgrade-Insecure-Requests": "1", "Connection": "keep-alive" } # 发送请求时携带自定义头,同时清空Cookie模拟隐身状态 html = requests.get("https://duregger.medium.com/growth-hacking-25e1db3b79cc", headers=headers, cookies={}) bs = BeautifulSoup(html.text, 'html.parser') # 提取文章主体内容 article_body = bs.find("div", class_="pw-post-body") if article_body: print(article_body.get_text(strip=True))
如果后续Medium更新反爬策略,可能需要偶尔更换User-Agent或调整请求头字段,但当前场景下模拟隐身请求头基本能解决问题。
内容的提问来源于stack exchange,提问作者Ujjal Baniya
相关产品推荐
相关产品推荐

