requests.get()爬取Myntra本地正常Colab返回站点维护页问题
爬取Myntra商品信息Colab环境异常问题
异常表现
使用requests.get()请求Myntra商品页获取价格、库存信息时,本地localhost环境可正常获取目标网页完整内容;在Google Colab环境中请求返回200状态码,但响应内容为站点维护提示页,无法提取有效商品数据。
复现信息
- 目标商品链接:Myntra product link
- 测试代码:
s=requests.session() url="https://www.myntra.com/jeans/levis/levis-512-men-black-slim-tapered-fit-mid-rise-clean-look-light-fade-stretchable-jeans/16612780/buy?utm_campaign=_3_&utm_medium=affiliate&utm_source=grabon" page=s.get(url) page.content
- Colab环境返回的异常响应内容:
b'<!doctype html> <html> <head> <title>Site Maintenance</title> <style type="text/css">body { text-align: center; padding: 150px; }h1 { font-size: 40px; }body { font: 16px Helvetica, sans-serif; color: #333; }#error { display: block; text-align: left; width: 650px; margin: 0 auto; }</style> </head> <body> <div id="error"> <h1>Oops! Something went wrong</h1> <div> <hr> <p>Please contact your administrator</p> </div> </div> </body> </html>'
问题原因
Myntra部署了反爬风控机制:
- Google Colab的出口IP属于谷歌云公开的数据中心IP段,这类IP是爬虫高频使用的资源,早已被Myntra标记为高风险来源,即使返回200状态码,也会直接返回拦截页面而非真实商品内容;本地环境使用的是家庭宽带住宅IP,不在风控黑名单内,所以可以正常访问。
- 代码未配置真实浏览器请求头,
requests默认携带的User-Agent为python-requests/版本号,特征明显,在云服务器环境下会进一步提高被拦截的概率。
解决方案
- 先补全真实浏览器请求头,模拟普通用户访问特征,核心是替换
User-Agent字段,参考配置:
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", "Accept-Language": "en-IN,en;q=0.9", "Referer": "https://www.myntra.com/" } page = s.get(url, headers=headers, timeout=10)
- 如果配置请求头后依然返回维护页,说明当前Colab出口IP已被严格封禁,需要在请求中配置住宅代理服务,不要使用数据中心类代理,住宅IP和普通用户访问IP属性一致,可绕过IP段风控。
- 控制请求频率,单次请求间隔设置为3秒以上,短时间内高频访问无论使用什么IP都会触发站点拦截。
爬取站点内容前请确认符合目标站点robots协议及当地相关法律法规要求。
内容的提问来源于stack exchange,提问作者Surendra
相关产品推荐
相关产品推荐

