This site requires JavaScript and Cookies to be enabled的解决方法

来源:互联网 发布:域名后缀排行榜 编辑:程序博客网 时间:2024/06/10 04:08

今天在做POST登陆程序,在用httpclient得到登陆页面的时候出问题了,页面代码如下:

< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript"> function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDate()+expiredays); document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + exdate.toGMTString()) + ";path=/"; } function getHostUri() { var loc = document.location; return loc.toString(); } setCookie('YPF8827340282Jdskjhfiw_928937459182JAX666', '115.173.104.54', 10); setCookie('DOAReferrer', document.referrer, 10); location.href = getHostUri(); </script></head>< body>< noscript>This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser.</noscript></body></html>


This site requires JavaScript and Cookies to be enabled. Please change your browser settings or upgrade your browser.

开始以为这一句是浏览器可以监测到JS是否运行,那我这个POST登陆就做不成了,只能考虑用IE插件模拟登陆了。

但查资料,有人说“服务器是没法判断你是否启用JS的。而判断COOKIE的话,应该是在首页的时候会发给你一个COOKIE,并且在其他页面判断是否有COOKIE,所以就得在COOKIE上入手,而不是User-agent”

这下就放心了。这个解决方法还是很简单的,就是模拟JS,给httpclient加上页面代码里的COOKIE后,再次访问登陆页面就可以得到正常的代码了

问题终于解决了,就在于第一次抓取数据时,如上返回的数据,根据该数据,只要给HttpClient设置好Cookie,再重新抓取就可以了