App Script中UrlFetchApp.fetch()获取特定URL失败的技术咨询
解决Google Apps Script无法获取leboncoin页面内容的问题
问题分析
你遇到的情况是因为目标网站(leboncoin)的反爬机制识别出了Google Apps Script默认的请求特征,直接拒绝了请求。UrlFetchApp默认的请求头(尤其是User-Agent字段)会被网站判定为非浏览器的机器人请求,从而触发拦截。
解决方案
通过自定义请求头模拟真实浏览器的请求,大概率可以绕过这类基础反爬拦截:
const url = "https://www.leboncoin.fr/recherche?text=rtx%203070&search_in=subject"; const options = { headers: { // 模拟Chrome浏览器的User-Agent,可根据浏览器版本更新内容 '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-Language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7' } }; try { const html = UrlFetchApp.fetch(url, options).getContentText(); console.log(html.slice(0, 500)); // 打印前500个字符验证是否成功获取内容 } catch (e) { console.error(`请求失败:${e.message}`); }
额外说明
- 如果上述方法仍然失败,说明网站启用了更严格的防护(比如Cloudflare人机验证),这类场景下UrlFetchApp无法处理需要JavaScript渲染或交互式验证的页面,需要考虑使用支持无头浏览器的服务(如Puppeteer)配合Google Cloud Functions部署。
- 爬取前务必查看目标网站的
robots.txt和服务条款,确保你的爬取行为符合平台规定,避免法律风险。
内容的提问来源于stack exchange,提问作者pilou
相关产品推荐
相关产品推荐

