C#如何欺骗WebRequest的IP地址

时间:2011-03-15 20:16:45

标签: c#

我托管了asp.net网站,我正在制作WebRequest来发布数据并获得响应。该网站正在进行IP过滤。我想欺骗发件人IP地址以进行测试。是否可以以编程方式进行,或者我必须使用任何工具。

public string GetResponse(string request)
{  
    lock (Obj)  
    {  
        request = request + _dataControlInfo.SendEndingWith;  
        Logger.Info(request);  
        var req = (HttpWebRequest)WebRequest.Create(_serviceUrl);  
        req.Headers.Add("SOAPAction", "\"\"");  
        req.ContentType = "text/xml;charset=\"utf-8\"";  
        req.Accept = "text/xml";  
        req.Method = "POST";  
        var stm = req.GetRequestStream();  
        var bytes = UtfEncoding.StringToUtf8ByteArray(request);  
        stm.Write(bytes, 0, bytes.Length);  
        stm.Close();  
        var resp = req.GetResponse();  
        var stmr = new StreamReader(resp.GetResponseStream());  
        var strResponseXml = stmr.ReadToEnd();  
        Logger.Info(strResponseXml);  
        return strResponseXml;  
    }  
}  

请说明任何可能性。

6 个答案:

答案 0 :(得分:13)

你正在寻找的是SharpPCap这是WinPCap的.NET端口..它允许你做IP Spoofing,这就是你所说的。你的想法唯一的问题是你不能得到回复。您可以发送请求,但如果您没有正确的返回地址,则请求将在互联网中丢失。


修改

要做到这一点yoruself w /在图书馆的帮助下你需要自己构建原始数据包。已经回答here.

答案 1 :(得分:2)

如果您希望得到回复,那么不。如果没有正确的IP地址,服务器将不会将响应发送到正确的目的地。

如果您坚持尝试,see this article以编程方式设置客户端的IP地址。

答案 2 :(得分:1)

或者您可以使用Web Performance TestsIP Switching enabled

的负载测试

答案 3 :(得分:0)

您可以尝试使用代理,如此处所述。 (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.proxy.aspx)。

在另一台计算机上设置代理,然后将该计算机配置为请求代理服务器应该使请求看起来好像来自代理的IP,而不是您的。

答案 4 :(得分:0)

某些服务器还可以考虑X-Forwarded-For和X-Real-IP标头。 因此,如果服务器检查这些标头,您可以将它们添加到Web请求中。 但这取决于服务器的实现。

答案 5 :(得分:0)

使用System.Security命名空间中的Spoof类...