public static void HTTPWorking(byte[] bytes, NetworkStream MyCatchStream, TcpClient ProxyClient, int LengthReaded) { try { string[] ParsedStrings = Encoding.ASCII.GetString(bytes).Trim().Split(new char[] { '\r', '\n' }); string NamePort = ""; if (ParsedStrings.Length > 1) { NamePort = ParsedStrings.FirstOrDefault(x => x.Contains("Host")); NamePort = NamePort.Substring(NamePort.IndexOf(":") + 2); string[] NameAndPort = NamePort.Trim().Split(new char[] { ':' }); // получаем имя домена и номер порта NamePort = ParsedStrings[2]; Console.WriteLine("Browser Request: "); Console.WriteLine(NamePort); Console.Write("Domain name: "); Console.WriteLine(NameAndPort[0]); if (NameAndPort.Length > 1) { Console.Write("Port: "); Console.WriteLine(NameAndPort[1]); } Console.WriteLine("______________________________________________"); TcpClient ToServer; //Если указан порт, то true, если нет, то false и по стандартному порту "80" if (NameAndPort.Length == 2) { ToServer = new TcpClient(NameAndPort[0], int.Parse(NameAndPort[1])); } else { ToServer = new TcpClient(NameAndPort[0], DefaultPort); } NetworkStream ToServerStream = ToServer.GetStream(); //Отправление исходного запроса. if (MyCatchStream.CanWrite) { ToServerStream.Write(AbsToRel(bytes), 0, LengthReaded); } //Прием ответа от сервера byte[] ServerReply = new byte[BufferLength]; int ServerLengthReaded = 0; if (ToServerStream.CanRead) { ServerLengthReaded = ToServerStream.Read(ServerReply, 0, BufferLength); } string[] ParsedStringsServerReply = Encoding.ASCII.GetString(ServerReply).Trim().Split(new char[] { '\r', '\n' }); Console.WriteLine("Server Reply: "); Console.Write(NamePort); Console.Write(" "); Console.WriteLine(ParsedStringsServerReply[0]); Console.WriteLine("______________________________________________"); //Отправление ответа сервера браузеру if (MyCatchStream.CanWrite) { MyCatchStream.Write(ServerReply, 0, ServerLengthReaded); } ToServerStream.CopyTo(MyCatchStream); //https connect } } catch { return; } finally { ProxyClient.Dispose(); } }
public static void init() { ToServer.init(); ToClient.init(); }