简书链接:进一步理解http,通过sockek发起http协议格式请求
文章字数:649,阅读全文大约需要2分钟
很多时候hook http 抓不到包也许是人家通过socket完成的,这socket也给了我很大启发,以后搞c代码加密的时候用jni调用socket也是可以完成一定的伪装工作的.
#抓包
记性不够好,记不住怎么写的了,我觉得是可以理解的,我无法理解那些让我口述原理的面试官,我的记忆有问题,那么我的搬运能力就不一定有问题,有时候我的记忆只是关联一下,很多东西要做的时候不理解完全可以搜索到我之前巩固的东西,然而面试官需要你当时能清楚的描述一件事物,对我来说非常痛苦,简直跟以前考试一样不爽。
j先完成抓包工作
请求头信息
1 2 3 4 5 6 7 8 9 10 11 12
| 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
|
响应头信息
1 2 3 4 5 6 7 8 9 10 11 12 13
| 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
|

模拟常规get的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| 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("========================"); }
} }
|
需要注意的问题就是每一行写入都需要换行,这个和抓包发现的格式是差不多的,最后是头部请求完毕之后再补上一个换行否则也不会成功。会一直等待响应

吃完饭用php写个本地的post参数的接受。然后再发一下post的手写
更多参考内容
https://blog.csdn.net/aaron_yang666/article/details/52795978