是否可以将 requestURL 区分为在地址栏中键入的以登录节点代理?

Is it possible to distinguish a requestURL as one typed in the address bar to log in a node proxy?

我只是无法让 http-proxy 模块作为转发代理正常工作。它作为反向代理非常有用。因此,我使用节点的 http 和 net 模块实现了 node-based 转发代理。对于 http 和 https,它工作正常。我稍后会处理 websockets。除其他事项外,我想记录通过浏览器访问或请求的 URLs。在请求 object 中,我确实得到了 URL,但正如预期的那样,当页面加载时,会触发无数其他请求,包括 AJAX、third-party 广告等.我不想记录这些。

我知道我可以区分 AJAX 请求和 x-requested-with header 请求。我可以通过检查 user-agent header 来区分来自浏览器的请求(尽管这些可以通过 cURL 进行欺骗)。我想最小化日志条目。

商业代理如何记录此类信息?或者他们只是记录每个请求?一种方法是在主请求之后的特定时间内不记录任何请求,假设它们都与主请求相关联。这在技术上是不准确的。

我在这方面进行了研究,但没有找到任何解决方案。我不是在寻找任何特定的代码,只是一些方向...

没有人能准确知道这一点,但您可以找到 "HTTP referer"、"x-requested-with" 等线索,或在每个 ajax 请求中添加您的自定义 headers ( squid 代理默认发送一个 "X-Forwarded-For" 表示他是一个代理),但任何人都可以弄清楚你为你的请求发送了什么 headers 或复制一个普通浏览器发送的所有 headers default,你会相信它是来自浏览器的人,但也可能是机器人发送的 bash cURL。 所以,实际上,例如,如果请求是 AJAX 请求,因为 headers 不是强制性的,默认情况下您的浏览器或框架会添加 x-requested-with 或对执行请求的 "guess" 有帮助的有用信息。