在访问一个奇怪的网站,需要会员才可以看里面的内容,只可以看,不可以拷贝。这不算奇怪。奇怪的是打开一条详细信息页面后,能够查看内容,刷新页面(F5)也能够再正常显示;但如果在地址栏再回车一次,则详细页面自动跳转到首页。就是直接在IE中直接输入地址打开一个明细页面是打不开的(哪怕你是会员已经登录),自动转向到首页。只有从首页(或者是二级页面)打开的详细页面才可以正常浏览!这样的结果是我用HTTPCLIENT这样的客户端去抓取数据时,自然为空。抓取的内容最后一段代码如下:
<script language=JavaScript>location.href='/';</script>
到这儿就没有了。好像是跳转了。详细信息根本没有办法抓取。请问哪位知道这种方式防止信息被抓取是何原理?如何解决?有意者可以私信联系。

解决方案 »

  1.   

    一步步来 先观察下地址栏是否有问题比如我可以在http://bbs.csdn.net/ 这一个地址下浏览不同的版块.
      

  2.   

    关键在“只有从首页(或者是二级页面)打开的详细页面才可以正常浏览!”打开chrome,F12->dev tools->network,看一看请求和返回都是什么
      

  3.   

    抓取页面,你主要看他的请求头,cookie
    模拟成与他一样就骗过了
      

  4.   

    他定了refer头,如果从地址栏敲入url,而且应用程序会判断refer值,如果refer不存在,那么他的权限判断就跳转到首页。
    你把他的refer头和权限信息加入http请求就可以了。
      

  5.   

    应该是如楼上几位说的,他的服务器有判断http请求中的referer头信息。
    HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我的主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。(来自百度)
    通过链接,submit提交表单或用javascript提交表单都会带上referer头信息,而直接在地址栏输入url或通过浏览器收藏夹访问网页则没有referer头域,所以你直接在浏览器敲回车发起的访问不带referer,后端服务器取不到referer信息就直接给你跳转到主页了,楼主可通过开发者工具看看发出的http请求信息。
      

  6.   

    应该是判断Header中的Refer了,这个属性标记着从哪个页面过来的,通常可以用来做用户跟踪.
    而现在应该是被他用来做访问限制了,只有从本域名的页面引用过来的才可以.
    做爬虫的时候可以在头信息中设置refer为他的主页就可以了.
      

  7.   

    F5会将当前会话请求重新发送一次,之前带Refer头信息,
    而地址栏回车则会重新发起连接,不包含POST参数与Refer头信息(或为空)
      

  8.   

    参考:waiting593 已经解决:......
    HttpGet get = new HttpGet(url);
    get.setHeader("Referer", "http://www.yoursite.com/");
    HttpResponse response = client.execute(get);
    HttpEntity entity = response.getEntity();
    ......