我的任务是创建某种代理服务器,自动更改任何网站上的所有链接。
我的主要问题是我甚至不知道如何描述我的问题谷歌。
所以,现在我有工作代理
while (true)
{
if (myTCP.Pending())
{
using (var myClient = myTCP.AcceptSocket())
{
if (myClient.Connected)
{
var httpRequest = ShitConverter.ReadToEnd(myClient);
var httpRequestString = Encoding.ASCII.GetString(httpRequest);
var myReg = new Regex(@"Host: (((?<host>.+?):(?<port>\d+?))|(?<host>.+?))\s+", RegexOptions.Multiline | RegexOptions.IgnoreCase);
var m = myReg.Match(System.Text.Encoding.ASCII.GetString(httpRequest));
var host = m.Groups["host"].Value;
var port = 0;
if (!int.TryParse(m.Groups["port"].Value, out port))
{
port = 80;
}
var myIPHostEntry = Dns.GetHostEntry(host);
var myIPEndPoint = new IPEndPoint(myIPHostEntry.AddressList[0],port);
using (var myReroutingSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
{
myReroutingSocket.Connect(myIPEndPoint);
if (myReroutingSocket.Send(httpRequest, httpRequest.Length, SocketFlags.None) !=
httpRequest.Length)
{
Console.WriteLine("Sending error");
}
else
{
var httpResponse = StConverter.ReadToEnd(myReroutingSocket);
var httpStringResponse = Encoding.ASCII.GetString(httpResponse);
myClient.Send(httpResponse, httpResponse.Length, SocketFlags.None);
}
}
}
}
}
}`
现在我需要找到浏览器会显示给我的所有HTML内容。
我认为httpResponse
变量持有它,但我不知道如何解释我得到的所有这些字节。 httpResponse的字符串版本包含类似
??\u0019\u001c\f???&?\u0002K?~???
所以我非常感谢我的问题提供任何帮助和指导。