使用axios发送请求时如何自动设置每日更新的请求Cookie?
前置说明
你之前尝试的两个方案不生效是因为使用场景完全不匹配:
cookie-parser是Node.js服务端用来解析客户端发来的请求中Cookie字段的工具,和主动向外发送请求携带Cookie没有任何关联withCredentials: true仅适用于浏览器环境下的跨域请求,需要对应服务端配置允许跨域携带凭证才会生效,你在脚本/后端环境调用axios时该配置完全不生效
可行解决方案
方案1:无头浏览器模拟访问自动获取Cookie(适配所有反爬场景,稳定性最高)
该方案完全模拟普通用户访问的流程,自动生成符合要求的Cookie,适配沃尔玛的动态Cookie、反爬校验Cookie生成逻辑,不需要手动逆向规则。
操作步骤:
- 安装无头浏览器工具,推荐
puppeteer或playwright - 代码中启动无头浏览器,访问你手动复制Cookie时对应的沃尔玛页面
- 等待页面加载完成、所有Cookie生成后,调用浏览器API提取当前域名下的全部Cookie
- 把提取到的Cookie拼接为标准的
name=value; name2=value2格式,放到后续axios请求的Cookie请求头中即可
参考代码示例:
const puppeteer = require('puppeteer'); const axios = require('axios'); // 自动获取沃尔玛有效Cookie async function getValidWalmartCookie() { const browser = await puppeteer.launch({ headless: 'new' }); const page = await browser.newPage(); // 替换为你手动获取Cookie时访问的沃尔玛页面地址 await page.goto('https://www.walmart.com/your-target-page-path'); // 可根据实际页面加载逻辑调整等待规则,比如等待指定DOM元素出现 await page.waitForTimeout(3000); // 提取当前页面所有Cookie const cookieList = await page.cookies(); await browser.close(); // 拼接为请求头需要的Cookie字符串格式 return cookieList.map(item => `${item.name}=${item.value}`).join('; '); } // 实际拉取数据逻辑 async function fetchWalmartBusinessData() { const requestCookie = await getValidWalmartCookie(); const response = await axios.get('https://www.walmart.com/your-target-data-api-path', { headers: { 'Cookie': requestCookie, // 其他请求头保持和浏览器访问时一致,避免被反爬拦截 '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,*/*;q=0.8' } }); return response.data; }
方案2:逆向Cookie生成逻辑直接获取(性能更高,资源消耗低)
如果不想运行无头浏览器,可以手动抓包定位Cookie的生成来源,直接在代码中模拟生成:
- 打开浏览器开发者工具的网络面板,清空请求后刷新沃尔玛页面,过滤
set-cookie响应头 - 找到你需要的Cookie是由哪个请求返回的,或者是否是前端JS逻辑动态生成的
- 如果是后端接口返回的,直接在代码中先调用这个前置请求,提取响应头中的
set-cookie字段拼接为可用的Cookie字符串即可 - 如果是前端JS生成的,逆向对应JS的生成逻辑,在自己的代码中实现相同的生成规则即可
配套优化建议
- 可以在代码中增加请求异常判断,如果axios请求返回401、403状态码,或者返回内容命中登录/人机校验特征,就自动触发重新获取Cookie的逻辑,全程不需要人工介入
- 所有请求头字段尽量和浏览器正常访问时的字段保持完全一致,避免因为请求特征异常被反爬拦截
- 个人使用场景下控制请求频率,避免触发沃尔玛的频率限制规则
内容的提问来源于stack exchange,提问作者Noel Covarrubias
相关产品推荐
相关产品推荐

