首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绕过HttpWebRequest检测?

如何绕过HttpWebRequest检测?
EN

Stack Overflow用户
提问于 2011-08-18 15:59:39
回答 2查看 1.7K关注 0票数 1

实际上,我是在玩HtmlAgilityPack。

我注意到它可以从HtmlWebRequest中解析出超文本标记语言。

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

以下是我的源代码:

代码语言:javascript
复制
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;
    }
}

我并不是想做侵犯版权的事情,只是对此感到好奇。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-18 16:51:48

没有HttpWebRequest检测这回事。

但是,您要访问的页面可能并不那么简单:它可能由几个HTTP请求(Iframe)加载,或者通过AJAX加载,或者在请求中需要特定的HTTP头。

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

找出不同之处,并使您的应用程序的行为与浏览器完全一样。

票数 4
EN

Stack Overflow用户

发布于 2011-08-19 09:09:58

谢谢你的影子向导,程序现在可以工作了。

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

代码语言:javascript
复制
webReq.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7104167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档