Redirect Jsoup重定向的行为与浏览器重定向不同

Redirect Jsoup重定向的行为与浏览器重定向不同,redirect,jsoup,Redirect,Jsoup,我通过Jsoup(最新版本1.10.2)面对一台服务器,从页面中提取一些数据。 此服务器向匿名用户开放,但它使用重定向链向每个用户授予会话ID 这是我通过浏览器得到的序列: 向 响应:302重定向到位置 跟随重定向,打开 响应:302重定向到位置 跟随重定向,打开 响应:200:) 使用Jsoup时,重定向链意外失败。查看步骤2中的差异: 首次请求(无cookies) 响应:302重定向到位置 跟随重定向,打开 响应:302重定向到位置/shared/SSO/http%3a%2f%2SERVER

我通过Jsoup(最新版本1.10.2)面对一台服务器,从页面中提取一些数据。 此服务器向匿名用户开放,但它使用重定向链向每个用户授予会话ID

这是我通过浏览器得到的序列:


  • 响应:302重定向到位置
  • 跟随重定向,打开
    响应:302重定向到位置
  • 跟随重定向,打开
    响应:200:)
  • 使用Jsoup时,重定向链意外失败。查看步骤2中的差异:

  • 首次请求(无cookies)
    响应:302重定向到位置
  • 跟随重定向,打开
    响应:302重定向到位置/shared/SSO/http%3a%2f%2SERVER\u主机/页面%3dsessionID=123456
  • 跟随重定向,打开 响应:400未找到:(
  • 在步骤2,服务器响应中的重定向位置以“/”开头,而不是以“http://”开头,因此在步骤3,它连接到错误的主机

    为什么在第2步中,根据请求属于浏览器或JSoup,我在服务器响应中得到了不同的位置

    我将JSoup请求设置为与浏览器请求相同的头:

    Response response = Jsoup.connect(link) 
                        .userAgent("Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")
                        .header("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8") 
                        .header("Accept-Encoding", "gzip, deflate, sdch") 
                        .header("Accept-Language", "it,en-US;q=0.8,en;q=0.6")
                        .header("Upgrade-Insecure-Requests", "1")
                        .method(Method.GET)
                        .followRedirects(true).execute();
    
    重定向头中的查询字符串的处理方式存在错误


    现在已在中修复。您可以构建HEAD来访问该修复,它将在下一版本(1.10.3)中提供.

    对不起,我的问题中有一个输入错误。我正在使用1.10.2版。我想知道服务器是否可以识别来自JSoup的请求,以生成与浏览器请求不同的响应。好的,谢谢澄清。任何事情都有可能,但设置UA后,我猜不到。看起来好像有什么东西没有被正确解码或编码。如果没有URL或其他复制方法,我无法为您调试。如果愿意,您可能希望打开一个问题并与我脱机联系。您可以签出进行复制。非常感谢Jonathan。感谢@FabioFormosa。已修复(并将更新答案)谢谢你。我知道这是一个开源项目,但事实上,他们在四个月内没有发布一个新版本来解决这个问题,这让人很难过。