代码之家  ›  专栏  ›  技术社区  ›  Jigar Joshi

假HTTP Get请求

  •  8
  • Jigar Joshi  · 技术社区  · 15 年前

    我注意到某些网站允许有限的命中率每IP 所以我可以通过编程让他们觉得请求不是来自同一个IP,

    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;
        }
    
    7 回复  |  直到 15 年前
        1
  •  11
  •   Andrew Barber Eric Lafortune    10 年前

    我猜这个过滤器是在IP包级别应用的,而不是在更高的HTTP级别应用的。在这种情况下 是与否 .

    是的-这是技术上可能欺骗你的IP地址,使IP数据包看起来像是来自其他地方。

    不,因为它不太可能有用。如果您在TCP数据包上伪造“发件人”地址,那么当您连接的机器试图路由到伪造的IP地址时,任何来自该机器的回复都将丢失。你什么也得不到。

    也就是说,你甚至无法完成 TCP Three-Way-Handshake 发送


    一个老把戏是使用所谓的“源路由”;其中TCP数据包包含有关如何路由信息的信息。这是用于诊断早在“白天”。您可以将自己置于指定的路由中,然后在数据包到达您的位置时停止数据包并回复它们,同样使用源路由信息。

    但这种技术根本不起作用

        2
  •  5
  •   Jon Skeet    15 年前

    首先,我希望任何试图进行源代码限制的站点都不会信任某个任意的头文件。数据包上写着反应必须回到哪里-我希望他们能基于这个来控制。

    第二,如果一个网站不想让你反复点击它们,你不觉得你试图绕过它们是不礼貌的吗?如果我是一个网站的所有者,我注意到有人试图这样做,我可能会全面禁止他们,如果可能的话。

        3
  •  1
  •   Vadim Fedorov    15 年前
        4
  •  0
  •   Dal Hundal    15 年前

    不,欺骗你的IP不是你可以在你的HTTP头做的事情。

    首先,我建议不管你想绕过什么限制-不要麻烦。它的存在是有原因的,而且你可能会违反某些人的服务使用条款。

    第二,如果你完全确定了,我想说的是,让请求看起来像是来自不同的IP的唯一方法就是让它实际上来自不同的IP,也就是说,通过使用一堆代理。

        5
  •  0
  •   kasperjj    15 年前

    不,基于源IP执行速率控制的站点如果使用伪造的头来实现,那将是非常幼稚的。

        6
  •  0
  •   pakore    15 年前

    不,除非您使用某种代理,否则您不能以编程方式执行。

        7
  •  0
  •   Borealid    15 年前

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