一个奇怪的网站,如何抓取里面的信息?

那些年的事儿 2013-07-19 10:53:07
在访问一个奇怪的网站,需要会员才可以看里面的内容,只可以看,不可以拷贝。这不算奇怪。

奇怪的是打开一条详细信息页面后,能够查看内容,刷新页面(F5)也能够再正常显示;但如果在地址栏再回车一次,则详细页面自动跳转到首页。就是直接在IE中直接输入地址打开一个明细页面是打不开的(哪怕你是会员已经登录),自动转向到首页。只有从首页(或者是二级页面)打开的详细页面才可以正常浏览!

这样的结果是我用HTTPCLIENT这样的客户端去抓取数据时,自然为空。抓取的内容最后一段代码如下:
<script language=JavaScript>location.href='/';</script>
到这儿就没有了。好像是跳转了。详细信息根本没有办法抓取。

请问哪位知道这种方式防止信息被抓取是何原理?如何解决?

有意者可以私信联系。
...全文
277 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
那些年的事儿 2013-07-23
  • 打赏
  • 举报
回复
参考:waiting593 已经解决: ...... HttpGet get = new HttpGet(url); get.setHeader("Referer", "http://www.yoursite.com/"); HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); ......
快乐的2 2013-07-20
  • 打赏
  • 举报
回复
F5会将当前会话请求重新发送一次,之前带Refer头信息, 而地址栏回车则会重新发起连接,不包含POST参数与Refer头信息(或为空)
快乐的2 2013-07-20
  • 打赏
  • 举报
回复
引用 7 楼 wind__snow 的回复:
应该是如楼上几位说的,他的服务器有判断http请求中的referer头信息。 HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我的主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。(来自百度) 通过链接,submit提交表单或用javascript提交表单都会带上referer头信息,而直接在地址栏输入url或通过浏览器收藏夹访问网页则没有referer头域,所以你直接在浏览器敲回车发起的访问不带referer,后端服务器取不到referer信息就直接给你跳转到主页了,楼主可通过开发者工具看看发出的http请求信息。
应该是判断Header中的Refer了,这个属性标记着从哪个页面过来的,通常可以用来做用户跟踪. 而现在应该是被他用来做访问限制了,只有从本域名的页面引用过来的才可以. 做爬虫的时候可以在头信息中设置refer为他的主页就可以了.
RickzdWen 2013-07-19
  • 打赏
  • 举报
回复
应该是如楼上几位说的,他的服务器有判断http请求中的referer头信息。 HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我的主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。(来自百度) 通过链接,submit提交表单或用javascript提交表单都会带上referer头信息,而直接在地址栏输入url或通过浏览器收藏夹访问网页则没有referer头域,所以你直接在浏览器敲回车发起的访问不带referer,后端服务器取不到referer信息就直接给你跳转到主页了,楼主可通过开发者工具看看发出的http请求信息。
fzfei2 2013-07-19
  • 打赏
  • 举报
回复
抓取页面,你主要看他的请求头,cookie 模拟成与他一样就骗过了
潮起潮落 2013-07-19
  • 打赏
  • 举报
回复
关键在“只有从首页(或者是二级页面)打开的详细页面才可以正常浏览!” 打开chrome,F12->dev tools->network,看一看请求和返回都是什么
再看我一眼 2013-07-19
  • 打赏
  • 举报
回复
一步步来 先观察下地址栏是否有问题 比如我可以在http://bbs.csdn.net/ 这一个地址下浏览不同的版块.
UEAnswer 2013-07-19
  • 打赏
  • 举报
回复
他定了refer头,如果从地址栏敲入url,而且应用程序会判断refer值,如果refer不存在,那么他的权限判断就跳转到首页。 你把他的refer头和权限信息加入http请求就可以了。
hch126163 2013-07-19
  • 打赏
  • 举报
回复
用开发人员工具分析
  • 打赏
  • 举报
回复

87,991

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧