• C#如何通过SOCKET的方式获取HTTPONLY COOKIE


    C#如何通过SOCKET的方式获取HTTPONLY COOKIE

    正常情况下C#可以使用HttpWebRequest、HttpWebResponse和CookieContainer类来获取Cookie,但是当Cookie设置为httponly,我们就不能用上面的方法获取。这时候可以用Socket来模拟http提交。具体如下:

    1.先取得默认DNS服务器地址:

    IPEndPoint endPoint;
    IPAddress IpList;
    IpList = Dns.GetHostAddresses("www.7fenx.com")[0];

      

    2.模拟http请求,设置http头:

     
    StringBuilder sendString=new StringBuilder(200);
    sendString.Append("POST "+ "/" + " HTTP/1.1 ");
    sendString.Append("Accept: */* ");
    sendString.Append("Host: "+host+" ");
    sendString.Append("User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36 ");
    sendString.Append("Content-Type: application/x-www-form-urlencoded ");
    sendString.Append("Content-Length: "+sendData.Length+" ");
    sendString.Append("Connection: keep-alive ");
    sendString.Append(postData+" ");

    3.发送请求

    byte[] sendBytes = Encoding.GetEncoding(endcoding).GetBytes(sendString.ToString());
    int httpPoint = 80;
    endPoint = new IPEndPoint(ip, httpPoint);
    socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    socket.Connect(endPoint);
    socket.Send(sendBytes,sendBytes.Length,0);

    4.获取服务器的返回信息

    Byte[] byteReceive = new Byte[1024];
    Int32 bytes = socket.Receive(byteReceive);
    string str = Encoding.Default.GetString(byteReceive, 0, bytes);

      

    5.提取Cookie内容

    Regex rgxCookie = new Regex("Set-Cookie:.*");
    MatchCollection cookies = rgxCookie.Matches(cookie);

    提取后需要做的就是解析Cookie就是一些字符串的处理。

    附上网络编程基础知识地址:

    http://www.7fenx.com/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.html

    初接触网络编程,如果哪里说错请指出。

  • 相关阅读:
    C#嵌套类
    C#8.0接口默认实现特性
    asp.net Server.Transfer
    clickjacking 攻击
    frame标签和frameset
    javascript打开窗口
    Linux 之 LNMP服务器搭建-PHP
    Linux 之 LNMP服务器搭建-前期准备
    Linux 之 LNMP服务器搭建-Nginx
    Linux 之 Samba服务器
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3203155.html
Copyright © 2020-2023  润新知