如何在Google App Script中通过Squid代理发送类CURL请求
解决方案:Google Apps Script 配置Squid代理实现POST请求
你的需求是等效实现指定curl命令的请求,核心是通过Squid代理向目标URL发送POST请求。Google Apps Script的UrlFetchApp支持代理配置,只需在请求选项中添加对应参数即可,以下是修改后的完整代码:
function doPost(e) { if(typeof e !== 'undefined'){ const req = e.postData.contents; makeHTTPrequest(req); } } function makeHTTPrequest(request){ var d = new Date(); request = request + d.getTime(); const secret = "SECRET_EXAMPLE"; var byteSignature = Utilities.computeHmacSha256Signature(request, secret); // 转换字节数组为十六进制字符串 var signature = byteSignature.reduce(function(str,chr){ chr = (chr < 0 ? chr + 256 : chr).toString(16); return str + (chr.length==1?'0':'') + chr; },''); request = request + "&signature=" + signature; // 目标URL:对应curl中的https://webhook.site/xxx const targetUrl = "https://webhook.site/dcf61fb9-bbb1-452e-9843-7d75b222abed"; // Squid代理地址 const proxyUrl = "http://35.225.50.255:3128"; const response = UrlFetchApp.fetch(targetUrl, { "method": "POST", "headers": { "X-MBX-APIKEY": "exmplMBIKEY" }, "payload": request, // 配置代理 "proxyUrl": proxyUrl, // 对应curl的-L参数,跟随重定向 "followRedirects": true, // 如果代理需要用户名密码,取消注释下面两行 // "proxyUsername": "your_proxy_user", // "proxyPassword": "your_proxy_pass" }); Logger.log("Response code is %s", response.getResponseCode()); Logger.log(response.getContentText()); }
关键修改说明:
- 修正请求目标:将之前错误设置的代理地址替换为实际需要请求的目标URL(即curl中的
https://webhook.site/xxx)。 - 添加代理配置:在请求选项中加入
proxyUrl参数,指定你的Squid代理服务器地址。 - 开启重定向跟随:显式设置
followRedirects: true,对应curl命令中的-L参数。 - 可选代理认证:如果你的Squid代理开启了用户名密码认证,添加
proxyUsername和proxyPassword参数即可。
内容的提问来源于stack exchange,提问作者ihar_makh
相关产品推荐
相关产品推荐

