Java method to print http headers to console

本文介绍了一个Java方法,用于向指定主机和端口发送HTTP GET请求并打印响应头信息。该方法构造了一个简单的HTTP请求,通过Socket API进行网络通信,并读取服务器返回的HTTP头部。
public static void printHttpHeaders(String host, int port)
      throws UnknownHostException, IOException {
    Socket socket = new Socket(host, port);
    StringBuffer request = new StringBuffer();
    request.append("GET / HTTP/1.1/r/n");
    request.append("User-Agent: RetrieveHTTPHeaders/0.1/r/n");
    request.append("Accept: */*/r/n");
    request.append("Host: ");
    request.append(host);
    request.append("/r/n");
    request.append("Connection: close/r/n");
    request.append("Accept-Encoding: *");
    request.append("/r/n/r/n");
    BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
        socket.getOutputStream());
    bufferedOutputStream.write(request.toString().getBytes());
    bufferedOutputStream.flush();
    BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(socket.getInputStream()));
    StringBuffer content = new StringBuffer();
    String line = bufferedReader.readLine();
    while (null != line && !"".equals(line)) {
      System.out.println(line);
      line = bufferedReader.readLine();
    }
    socket.close();
  }
(function () { // 保存原始方法 const origOpen = XMLHttpRequest.prototype.open; const origSend = XMLHttpRequest.prototype.send; const origFetch = window.fetch; // 用于存储请求头 const requestHeaders = new WeakMap(); // Hook setRequestHeader 来记录请求头 const origSetRequestHeader = XMLHttpRequest.prototype.setRequestHeader; XMLHttpRequest.prototype.setRequestHeader = function (header, value) { if (!requestHeaders.has(this)) { requestHeaders.set(this, {}); } const headers = requestHeaders.get(this); headers[header] = value; return origSetRequestHeader.apply(this, arguments); }; // Hook XMLHttpRequest.open XMLHttpRequest.prototype.open = function (method, url) { this._url = url; this._method = method; return origOpen.apply(this, arguments); }; // Hook XMLHttpRequest.send XMLHttpRequest.prototype.send = function (body) { this.addEventListener('load', function () { if (this._url && this._url.includes('/idms/order-apply/list')) { const reqHeaders = requestHeaders.get(this) || {}; const resHeaders = {}; const headerStr = this.getAllResponseHeaders(); headerStr.trim().split(/[\r\n]+/).forEach(line => { const parts = line.split(': '); const key = parts.shift(); const value = parts.join(': '); resHeaders[key] = value; }); const requestInfo = { url: this._url, method: this._method, requestHeaders: reqHeaders, requestBody: body, responseHeaders: resHeaders, responseBody: this.responseText, status: this.status, statusText: this.statusText }; console.log('✅ 拦截到请求:', requestInfo); } }); return origSend.apply(this, arguments); }; // Hook fetch API window.fetch = function (input, init) { const url = typeof input === 'string' ? input : input.url; if (url.includes('/idms/order-apply/list')) { console.log('🔍 拦截到 fetch 请求:', url); return origFetch(input, init).then(response => { const clone = response.clone(); clone.text().then(text => { const reqHeaders = init?.headers || {}; const resHeaders = {}; response.headers.forEach((value, key) => { resHeaders[key] = value; }); const requestInfo = { url, method: init?.method || 'GET', requestHeaders: reqHeaders, requestBody: init?.body || null, responseHeaders: resHeaders, responseBody: text, status: response.status, statusText: response.statusText }; console.log('✅ 拦截到 fetch 响应:', requestInfo); }); return response; }); } return origFetch(input, init); }; console.log('监听页面请求监听器已注入,请刷新页面并触发请求查看控制台输出。'); })(); 修改代码,使其可以发送监听到的网络请求内容,并使用python接收发送的内容,python需要输出接收到的内容
09-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值