我有一个页面:http://example/mypage
还有一个代理向我的页面发出请求:
http://proxy/?url=http://example/mypage
如何确定页面是从没有代理的空白页面打开还是由代理请求?
我有一个页面:http://example/mypage
还有一个代理向我的页面发出请求:
http://proxy/?url=http://example/mypage
如何确定页面是从没有代理的空白页面打开还是由代理请求?
一般来说,你不能。当请求到达您的 HTTP 服务器时,您拥有的有关客户端的唯一信息是其 IP 地址以及客户端决定在请求标头中发送给您的任何其他信息。您可以做的最好的事情是在某种数据库中查找 IP 地址,看看它是否是已知的代理。
如果您正在寻找希望在请求标头中传递特定信息的特定代理,那完全是另一回事。但总的来说,我可以从我的客户端向您发送一个 Web 请求,让它看起来像一个代理,或者我可以从一个代理发送一个请求,让它看起来像直接来自客户端。
我怀疑不会有可靠的方法来做到这一点,因为匿名代理试图......好吧匿名......你可以尝试检查是否HttpContext.Request.UrlReferrer
有一些价值,但这并不可靠。您可以检查一些已知代理 IP 地址的数据库,但我怀疑这也不是很可靠。