如何在代理服务器转发请求至源站前为请求添加Cookie?
方案一:Nginx配置
1. 获取目标网站的登录Cookie
- 在浏览器登录
abc.com,打开开发者工具(F12)→「应用」→「Cookie」,找到该网站的登录会话Cookie(通常是sessionid、auth_token这类键值对) - 复制完整的Cookie字符串,例如:
sessionid=abc123; auth_token=xyz789
2. 编写Nginx代理配置
编辑Nginx配置文件(如/etc/nginx/sites-available/abc-proxy.conf),添加以下Server块:
server { listen 80; server_name proxy-abc.yourdomain.com; # 替换为你的代理域名 location / { proxy_pass https://abc.com; # 转发核心请求头 proxy_set_header Host abc.com; proxy_set_header Referer https://abc.com; # 注入登录Cookie proxy_set_header Cookie "sessionid=abc123; auth_token=xyz789"; # 传递客户端原始信息 proxy_set_header User-Agent $http_user_agent; proxy_set_header X-Real-IP $remote_addr; } }
- 将
proxy-abc.yourdomain.com替换为你实际使用的代理域名 - 把
Cookie字段的值替换为你复制的真实Cookie内容
3. 生效配置
- 检查配置语法:
nginx -t - 重启Nginx:
systemctl restart nginx
方案二:Apache配置
1. 启用必要模块
先开启Apache的代理和请求头模块:
a2enmod proxy proxy_http headers systemctl restart apache2
2. 获取目标网站的登录Cookie
操作同Nginx部分,复制abc.com的登录Cookie字符串
3. 编写Apache虚拟主机配置
创建虚拟主机配置文件(如/etc/apache2/sites-available/abc-proxy.conf):
<VirtualHost *:80> ServerName proxy-abc.yourdomain.com ProxyRequests Off # 转发请求到目标网站 ProxyPass / https://abc.com/ ProxyPassReverse / https://abc.com/ # 注入登录Cookie RequestHeader set Cookie "sessionid=abc123; auth_token=xyz789" # 配置必要的转发头 RequestHeader set Host "abc.com" RequestHeader set Referer "https://abc.com" ProxyPreserveHost On </VirtualHost>
- 替换
proxy-abc.yourdomain.com为你的代理域名 - 更新
Cookie字段为真实的登录Cookie内容
4. 生效配置
a2ensite abc-proxy.conf systemctl restart apache2
关键注意事项
- Cookie存在有效期,过期后需要重新从浏览器获取并更新代理配置
- 确保代理服务器能正常访问
abc.com,无网络拦截 - 不要随意公开代理域名,防止未授权人员利用该代理访问目标网站
- 若目标网站有IP验证或其他反爬机制,可尝试在代理配置中添加更多客户端原始请求头(如
X-Forwarded-For)
内容的提问来源于stack exchange,提问作者Mohsin Ali
相关产品推荐
相关产品推荐

