繁体   English   中英

如何绕过HttpWebRequest检测?

[英]How to bypass HttpWebRequest detection?

其实我正在玩HtmlAgilityPack。

我注意到它可以解析HtmlWebRequest中的HTML。

我想知道有没有办法绕过“HttpWebRequest”检测? 这是因为当我尝试使用HttpWebRequest来获取HTML内容时,似乎服务器知道我正在使用“HttpWebRequest”并且不允许我在内部检索HTML。

这是我的源代码:

protected void Page_Load(object sender, EventArgs e)
{
    var targetUrl = new Uri("http://www.aastocks.com/tc/ltp/rtquote.aspx?symbol=03800");
    var webReq = (HttpWebRequest)WebRequest.Create(targetUrl);
    WebResponse webRes = webReq.GetResponse();
    System.IO.Stream stream = webRes.GetResponseStream();
    System.Text.Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
    System.IO.StreamReader reader = new System.IO.StreamReader(stream, encode);            
    HtmlDocument doc = new HtmlDocument();
    doc.Load(reader);
    foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//html"))
    {
        Label1.Text += link.InnerHtml;
    }
}

我不是想做一些违反版权的事情,但只是好奇这件事。

没有HttpWebRequest检测这样的东西。

但是,您访问的页面可能不是那么简单:它可能由多个HTTP请求(iframe)加载,或通过AJAX加载,或者在请求中需要某些HTTP标头。

我可以建议的最好的事情是:跟踪浏览器和网站之间的HTTP流量(例如,使用Fiddler )。 然后跟踪您的应用程序(以编程方式发送请求)与同一网站之间的流量。

发现差异,让您的应用程序与浏览器完全一样。

谢谢Shadow Wizard,程序现在可以使用了。

解决方案是在webReq.Create(targetUrl)之后设置UserAgent。

webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM