伪造的 HTTP Get 请求

7
我注意到某些网站允许每个IP有限量的点击次数,那么我能否编程使他们感觉请求不是来自同一IP呢?
好吧,我不太确定HTTP数据包,但我们能否在头部或其他地方指定它以愚弄他们呢?
以下是GET请求的代码。
public static String sendGetRequest(String endpoint, String requestParameters) {
        String result = null;
        if (endpoint.startsWith("http://")) {
// Send a GET request to the servlet
            try {
// Construct data
                StringBuffer data = new StringBuffer();

// Send data
                String urlStr = endpoint;
                if (requestParameters != null && requestParameters.length() > 0) {
                    urlStr += "?" + requestParameters;
                }
                URL url = new URL(urlStr);
                URLConnection conn = url.openConnection();

// Get the response
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                StringBuffer sb = new StringBuffer();
                String line;
                while ((line = rd.readLine()) != null) {
                    sb.append(line);
                }
                rd.close();
                result = sb.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

我很高兴看到我发表的帖子已经过去了10年。 - jmj
7个回答

11

我猜测过滤器是应用在IP数据包级别而不是更高级别的HTTP级别。在这种情况下,是和否

是 - 在技术上可以伪造你的IP地址,使得IP数据包看起来像是来自其他地方。

否 - 因为这不太可能有用。如果你伪造TCP数据包上的“from”地址,那么任何来自你连接的机器的回复都将丢失,因为它们试图路由到伪造的IP地址。你什么也得不到。

也就是说,你甚至无法完成TCP Three-Way-Handshake。在这个过程完成之前,你甚至不能发送任何内容到连接中,因为实际上根本没有连接。HTTP运行在TCP上,所以除非你完成握手(需要一个有效的'from' IP地址),否则你无法利用它。


一个古老的技巧是使用所谓的“源路由”,也就是TCP数据包中包含有关如何路由信息的信息。这是用于诊断的远古时期。您可以将自己放在指定的路线中,然后停止数据包到达您并回复它们,再次使用源路由信息。

但是这种技术现在已经完全不起作用了,因为几乎每个Internet上的路由器现在都会简单地丢弃源路由的数据包,因为没有合法的需要它们,同时可能造成大量混乱。


5
首先,我希望任何试图进行源限制的网站不会相信任意标头。数据包指示响应返回的位置 - 我希望他们基于此进行限制。
其次,如果一个网站不想让你重复访问他们,你认为试图规避这一点是不礼貌的吗?如果我是一个网站所有者并且注意到有人试图这样做,我可能会尽可能地禁止他们。

我计划使用这个来保护我的网站。你能告诉我需要检查哪些参数吗? - jmj
@abc:这将完全取决于您的站点如何实现 - 但我期望 API 的某个部分会给出源 API 地址。它可能最终成为代理,但在许多情况下仍然足够好。 - Jon Skeet

1
不,仅通过更改 Http 标头是无法欺骗这种系统的。实现您目标的可能方法是使用 Tor 网络

0

不,伪造您的IP地址不是您可以在HTTP头中执行的操作。

首先,我建议您无论要绕过什么限制 - 都不要尝试。它存在的原因是有道理的,并且您可能会违反某些服务条款。

其次,如果您绝对确定要这样做,我会说您唯一能够让请求看起来像来自不同IP的方法就是实际上让它来自不同的IP - 即通过使用一堆代理。


我计划使用这个来保护我的网站。你能告诉我需要检查哪些参数吗? - jmj

0
不,基于源IP的速率控制网站如果使用可以伪造的标头来实现它,那么它们将非常天真。

0

不行,除非你使用某种代理,否则无法以编程方式实现。

通常,IP 检测是从 IP 级别进行的,而不是从 HTTP 标头进行的。如果有人通过标头检测 IP,则是错误的。


0

如果我可以用“不健康”的词汇来形容,让网站认为另一个IP发出请求的“正确”方法是使用代理连接。该网站实际上可能正在检查源IP地址,这不是HTTP请求的属性。因此,响应将传递到您的“其他”IP。您应该查看ssh -Dprivoxy或另一款软件,以通过远程中介将所有与该网站的流量汇集起来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接