我之前写了一个小工具,实时获取一个网站在线人数的,该网站曾经有提供过一个接口,但是访问频率一高就会被禁止访问,过很久才能再次访问。
然后我就找了方法直接获取网页,从网页中提取在线人数统计数据。
用的是 Document doc= Jsoup.connect(url).get();这个方法。
但是过了几个月,再次查看时,发现我用这个方法直接返回503报错,一次都没有成功。查了下是被禁止访问了,本以为是IP问题,但是换了电脑和网络依旧不能通过此方法获取到网页数据。用浏览器却可以正常访问。猜测可能是该网站管理员察觉到了这种方法,从而禁止了。
后面通过两天网络上查找,发发现了HttpClient工具可以模仿浏览器访问,尝试了一下,发现确实没有再出503问题了,但是获取到的却是另一个页面,通过查看,发现是那个网站加了个验证机制,直接访问时会加载一个等待页面,等待5~10秒后会在链接中携带一长串计算出来的key重新访问本网址,从而正确进入网站,然后后面几个小时内直接访问网址都可以不用再次进入等待页面,网址链接中也不会再携带key。
网上搜索了两天,发现关于自动跳转问题,网上的资料都是重定向,通过获取网页状态码的重定向状态码再去获取新页面。但是这个网页并不是通过重定向跳转的,并且还有延时的时间,网页获取的等待页面和正式页面状态码也都是200。
想问下这种情况有没有什么方法可以解决,不需要知道怎么计算那个key,能不能通过httpClient让它自动执行计算并跳转,我再获取跳转后的页面。
如果不行,还有没有别的方法可以实现的,希望是java可以做到的方法,我目前只对java最熟悉。
java有没有能获取到那种等待N秒后js跳转的网页内容的方法
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-