梦域 2022-01-09 00:59 采纳率: 100%
浏览 25
已结题

java有没有能获取到那种等待N秒后js跳转的网页内容的方法

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

  • 写回答

1条回答 默认 最新

  • zhang.yao Java领域新星创作者 2022-01-10 22:31
    关注

    你确定下5~10秒后会在链接中携带一长串计算出来的key 这是通过什么方式实现的,如果是302重定向,那可以 如果是websocket估计有点困难了
    不能放出来个网址吗 有地址方便研究

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 修改了问题 1月9日
  • 创建了问题 1月9日

悬赏问题

  • ¥50 R语言读取nc按月均值转为tif
  • ¥30 智能车串级pid调参
  • ¥15 visual studio code翻译老是错误
  • ¥20 卫星测高数据的高程转换
  • ¥15 爬取招聘网站数据信息
  • ¥15 安装完tensorflow,import tensorflow as tf后报错,如何解决?
  • ¥15 ultralytics库导出onnx模型,模型失去预测能力
  • ¥15 linux下点对点协议连接2个USB串口的硬件流量控制问题
  • ¥15 SQL数据自动生成问题
  • ¥15 设密码后无法访问他人的共享文件