在4.5框架中捕获.browser文件中的用户代理

时间:2013-10-21 12:06:36

标签: asp.net web-crawler asp.net-4.5

从4.0迁移到4.5 .NET Framework时,某些爬虫似乎没有在ASP.NET应用程序中捕获。

我在App_Browsers目录中有一个.browser文件,其中包含以下定义:

<browser id="Baiduspider" parentID="Default">
<sampleHeaders>
  <header name="Connection" value="close"/>
  <header name="Accept" value="*/*"/>
  <header name="Accept-Encoding" value="gzip"/>
  <header name="Accept-Language" value="zh-cn,zh-tw"/>
  <header name="Host" value="www.example.com"/>
  <header name="User-Agent" value="Baiduspider+(+http://www.baidu.com/search/spider.html)"/>
</sampleHeaders>
<identification>
  <userAgent match="Baiduspider"/>
</identification>
<capabilities>
  <capability name="crawler" value="true"/>
  <capability name="browser" value="Baidu.com"/>
  <capability name="majorversion" value="0"/>
  <capability name="minorversion" value=".0"/>
  <capability name="version" value="0.0"/>
</capabilities>
</browser>

但该行

Request.Browser.Crawler

返回

false

为百度用户代理:

Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

我怀疑百度由于括号而没有很好地构建他的User-Agent字符串,但这在4.0 .NET Framework中有效。

任何人都可以帮助我吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

尝试更改

<browser id="Baiduspider" parentID="Default">

<browser id="Baiduspider" parentID="Mozilla">

文件v4.0.30319 \ Config \ Browsers \ generic.browser可能有这样的内容:

<browser id="Mozilla" parentID="Default">
<identification>
<userAgent match="Mozilla" />
</identification>

所以也许在4.5中,它在匹配你的自定义定义之前匹配“第一”?