来自Java Server的奇怪输出 - 我的网站遭到了黑客攻击吗?

时间:2013-04-10 23:40:48

标签: java html webserver

我正在使用Java构建服务器,以及Horstmann的 Big Java 。当我完成一个程序“只是建立与主机的连接,向主机发送GET命令,然后从服务器接收输入,直到服务器关闭它的连接,”我决定自己尝试网站。

它返回的代码显示 nothing ,如what the html on my site looks like。事实上,它似乎完全和完全劫持了我的网站。当然,网站本身看起来总是像......

我真的不确定我在这里看到了什么。我仔细检查过代码是否正确。这个问题是在Java方面,还是在我身边?

这是Java:

import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class WebGet {
    public static void main(String[] args) throws IOException {
        // Get command-line arguments
        String host;
        String resource;

    if (args.length == 2) {
        host = args[0];
        resource = args[1];
    } else {
        System.out.println("Getting / from thelinell.com");
        host = "thelinell.com";
        resource = "/";
    }

    // Open Socket
    final int HTTP_PORT = 80;
    Socket s = new Socket(host, HTTP_PORT);
    // Get Streams
    InputStream instream = s.getInputStream();
    OutputStream outstream = s.getOutputStream();
    // Turn streams into scanners and writers
    Scanner in = new Scanner(instream);
    PrintWriter out = new PrintWriter(outstream);
    // Send command
    String command = "GET " + resource + "HTTP/1.1\n" + "Host: " + host + "\n\n";
    out.print(command);
    out.flush();
    // Read server response
    while (in.hasNextLine()) {
        String input = in.nextLine();
        System.out.println(input);
    }

    // Close the socket
    s.close();
}
}

现在,返回的代码看起来像一堆广告而且相当长。为简洁起见,这是它给我的pastebin。如果需要,我会在这里添加。

1 个答案:

答案 0 :(得分:3)

资源URI和HTTP版本片段之间需要一个空格:

String command = "GET " + resource + "HTTP/1.1\n" ...

应该是:

String command = "GET " + resource + " HTTP/1.1\n" ...

就像现在一样,您的请求如下所示:

  

GET /HTTP/1.1
  主持人:thelinell.com

虽然对HTTP 1.1无效,但仍然被您的网络托管服务提供商拦截(可能是Simple-Request),然后将这些(令人发指的)横幅广告收集起来。