jsoup 403 错误.简单的网页工作正常


jsoup 403 error. Simple webpage works fine

我看过其他类似的帖子,但没有明显的跳出来。我相信如果我错过了,有人会指出我正确的方向!

问题是我的应用程序中的这段代码曾经工作过,但现在不再工作了。所以我假设网站上发生了一些变化。我在同一应用程序中对其他三个网站使用完全相同的代码,它们运行良好。LOGCAT 显示以下错误:

org.jsoup.HttpStatusException: HTTP 错误获取 URL。Status=403, URL=http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php

我制作了这个简单的网页,我可以从本地驱动器启动它并且可以工作(如果您自己尝试,则需要将日期和时间调整为当前的UTC时间):

<form method="post" action="http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php">
 Enter aerodrome ID(s)
 <input type="text" name="AERO_Tab_Aero[0]"> 
        <input type="hidden" name="AERO_Date_DATE" value="2016/01/25">
        <input type="hidden" name="AERO_Date_HEURE" value="07:12">
        <input type="hidden" name="bResultat" value="true">
        <input type="hidden" name="ModeAffichage" value="COMPLET">
        <input type="hidden" name="AERO_Duree" value="96">
        <input type="hidden" name="AERO_CM_REGLE" value="1">
        <input type="hidden" name="AERO_CM_GPS" value="2">
        <input type="hidden" name="AERO_CM_INFO_COMP" value="1"> 
     <p>
        <input type="Submit" value="Get the bulletins">
     </p>
</form>

此代码返回错误:

doc = Jsoup.connect("http://notamweb.aviation-civile.gouv.fr/Script/IHM/Bul_Aerodrome.php")
                    .data("bResultat", "true").data("ModeAffichage", "COMPLET")
                    .data("AERO_Date_DATE", date).data("AERO_Date_HEURE", time).data("AERO_Duree", "96").data("AERO_CM_REGLE", "1").data("AERO_CM_GPS", "2")
                    .data("AERO_CM_INFO_COMP", "1").data("AERO_Tab_Aero[0]", params[0].substring(0, params[0].length() - 1))
                    .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36")
                    .timeout(6000).post();

思潮?

编辑#1:当我使用我的迷你网页时,我看到的标题是:

请求标头 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8

接受编码:gzip,放气

Accept-Language:en-US,en;q=0.8,en-AU;q=0.6

缓存控制:最大年龄=0

连接方式:保持活动

状态

内容长度:180

内容类型:application/x-www-form-urlencoded

主办:notamweb.aviation-civile.gouv.fr

来源:空

升级不安全请求:1

用户代理:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 野生动物园/537.36

表单数据

AERO_Tab_Aero[0]:KLAX

AERO_Date_DATE:2016/01/25

AERO_Date_HEURE:11:21

b结果:真

模式连接:完成

AERO_Duree:96

AERO_CM_REGLE:1

AERO_CM_GPS:2

AERO_CM_INFO_COMP:1

问题已解决。问题是模拟器时钟错误,导致网页拒绝请求。

JonasCz 的帮助想法:

解决此问题的一种方法是在桌面浏览器中加载页面,然后查看开发人员工具的网络选项卡,以了解它到底在发送什么,尤其是 cookie 和标头。我的猜测是,您需要发送其他/附加cookie,或者可能是Referer标头,因为网站可能正在检查这一点,然后根据您的请求发送相同或相似的标头/cookie。