c# - 如何绕过 HttpWebRequest 检测?

标签 c# asp.net html-agility-pack

实际上我在玩 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 header 。

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

找出差异,让您的应用程序的行为与浏览器完全一样。

关于c# - 如何绕过 HttpWebRequest 检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7104167/

相关文章:

c# - 从网站下载音频文件

c# - 尝试获取 ICacheManager 类型的实例时发生激活错误, key \"\"“

c# - Resharper:IEnumerable 的可能多重枚举

c# - ASP.NET 动态插入代码到头部

javascript - 如何在外部 javascript 文件中获取 asp.net 客户端 ID

c# - C#HtmlAgilityPack选择主要节点

c# - 使用 WCF 服务的多个构造函数调用

c# - 使用 linq 表达式的 params 数组

asp.net - GetGlobalResourceObject 或 Resources.Resource - 哪个更好?

html-agility-pack - 如何获取具有多个css类的html元素