【问题标题】:Jsoup: Session expires after some timeJsoup:会话在一段时间后过期
【发布时间】:2012-05-23 10:26:12
【问题描述】:

我已经使用 Jsoup 编写了一个 Java 代码,或者从 https://widgets.vodafone.com 网站中提取了一些数据。我通过使用 Firefox 插件“实时 HTTP 标头”读取标头并在登录时传递它们来做到这一点。虽然它运行良好,但会话每两天到期。我编写这段代码的主要座右铭(这是它的完全自动化)仍未得到满足。

如果我重新登录并使用新的“身份验证 ID”和“cookie ID”更新代码,代码将再次开始工作。

谁能告诉我如何让它工作。

附:我为 developer.getjar.com 网站做了同样的事情,它就像一个魅力。到目前为止还没有给我任何问题。

谢谢, 阿伦

【问题讨论】:

    标签: web-crawler jsoup


    【解决方案1】:

    某些 cookie 有过期日期。您实际上无能为力,只能控制 HTTP 403 异常。当它发生时,重做“登录”过程。

    loginMethod();
    
    while(true) {
    
        if(expired())
            loginMethod();
    
        if(processingOver())
            break;
    
        //Processing
    
    }
    

    【讨论】:

    • 它将我重定向到一个显示“您的会话已过期”的页面:(当我在使用实时 HTTP 标头时看到 cookie 的过期日期时,是一个月后..这就是为什么我不能'不明白为什么会这样
    • 刚刚编辑了我的答案以使其更清晰。由于您对代码了解不多,因此我尝试以易于理解的方式命名方法。
    • 我知道我提出问题的方式并不清楚,但由于我不拥有代码(我在一家 IT 公司工作),所以我不能在这里拍它。但我会尽量让它更清楚。最初,我使用 firefox 登录并记下 cookie ID 和身份验证令牌(沃达丰网站独有)以及其他数据。这些是过期的,因为每当我无法使用代码登录时,我都必须更改它们。如果我在 Firefox 中注销该站点,cookie ID 和身份验证令牌将变得无用,我必须再次更改。所以我只是简单地关闭窗口。
    • 在使用 jsoup 连接时,我将这些信息与用户名和密码一起传递。我解析页面并检索需要进一步处理的链接。处理结束后,我不会注销,因为它会使 cookie 无用。我只是退出程序。这最多工作两天,之后我必须输入新的 cookie ID 和身份验证令牌。
    • 当它无法登录时,它会将我重定向到登录页面,顶部显示“您的会话已过期”。您可以制作虚拟凭据并在有时间的情况下尝试一下,这样我所说的就很清楚了。我知道问的太多了,但我很难发布代码。
    猜你喜欢
    • 2013-07-15
    • 2016-11-11
    • 2015-09-16
    • 1970-01-01
    • 2012-12-18
    • 2019-08-15
    • 2021-12-16
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多