进一步理解http,通过sockek发起http协议格式请求

很多时候hook http 抓不到包也许是人家通过socket完成的,这socket也给了我很大启发,以后搞c代码加密的时候用jni调用socket也是可以完成一定的伪装工作的.

抓包

记性不够好,记不住怎么写的了,我觉得是可以理解的,我无法理解那些让我口述原理的面试官,我的记忆有问题,那么我的搬运能力就不一定有问题,有时候我的记忆只是关联一下,很多东西要做的时候不理解完全可以搜索到我之前巩固的东西,然而面试官需要你当时能清楚的描述一件事物,对我来说非常痛苦,简直跟以前考试一样不爽。

j先完成抓包工作
请求头信息

GET /about/ HTTP/1.1
Host: qssq666.cn
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Referer: http://qssq666.cn/2017/06/01/%E6%96%B0%E5%8A%A8%E6%80%81/
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
Cookie: Uxxxxxxxxxx不告诉你
If-Modified-Since: Sat, 19 May 2018 14:34:23 GMT

响应头信息

HTTP/1.1 304 Not Modified
Date: Sat, 26 May 2018 10:32:13 GMT
Via: 1.1 varnish
Cache-Control: max-age=600
Expires: Fri, 25 May 2018 22:30:08 GMT
Age: 9
Connection: keep-alive
X-Served-By: cache-hnd18729-HND
X-Cache: HIT
X-Cache-Hits: 2
X-Timer: S1527330733.027674,VS0,VE0
Vary: Accept-Encoding
X-Fastly-Request-ID: 38bcf151abc24985031263ebd6db1a5c1d82c091
image.png

模拟常规get的操作


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;

public class SocketTest {

    public static void main(String[] args) throws IOException {

        Socket socket = new Socket("www.qssq666.cn", 80);// ip地址或者域名
                                                            // 端口号,如果是https则是443

        // 接受数据的输入流
        final BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        // 发送数据 输出流
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

        bw.write("GET /about/ HTTP/1.1");
        bw.write("\n");
        bw.write("Host: qssq666.cn");
        bw.write("\n");
        bw.write("Connection: Keep-Alive");
        bw.write("\n");
        bw.write("\n");
        bw.flush();
        System.out.println("execute....");
        while (true) {
            String line = null;
            try {
                // System.out.println("========readLineStart=======");
                while ((line = br.readLine()) != null) {
                    System.out.println("" + line);
                }
                // System.out.println("========readLineEnd=======");
            } catch (IOException e) {
                System.err.println("出现异常:" + e.toString());
                e.printStackTrace();
            }

            // System.out.println("========================");
        }

    }
}

需要注意的问题就是每一行写入都需要换行,这个和抓包发现的格式是差不多的,最后是头部请求完毕之后再补上一个换行否则也不会成功。会一直等待响应


image.png

吃完饭用php写个本地的post参数的接受。然后再发一下post的手写

更多参考内容
https://blog.csdn.net/aaron_yang666/article/details/52795978

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容