将 curl 与 cookie 结合使用

use*_*443 3 scripting bash wget curl shell-scripting

我希望有人可以帮助我解决这个问题。我已经尝试了一段时间了,有各种各样的变化,似乎无法让它发挥作用。

我正在尝试编写一种方法来登录https://login.three.ie/以从 */My_account_balance 检查帐户余额

我已经尝试了各种 wget 命令,但从我读到的内容来看,curl 更有可能完成这项任务。

我一直在尝试我在网上遇到的变体,包括从这里开始的 stackoverflow,但似乎没有任何效果。

这是我尝试的最后一个:

    curl -X POST -c cookies.txt -u "Uern@me:P@ssw0rd" https://login.three.ie/
Run Code Online (Sandbox Code Playgroud)

这确实将 cookie 文件保存在此处:

    $ cat cookies.txt

    Netscape HTTP Cookie File

    #http://curl.haxx.se/docs/http-cookies.html
    This file was generated by libcurl! Edit at your own risk.
    HttpOnly_login.three.ie        FALSE   /       FALSE   1433988274
    laravel_session eyJpdiI6IkFZWmxvZ2oyXC9NNGVIbHVpejZwRWp3PT0iLCJ2YWx1ZSI6Imxkd25UKzBoMldiQlhYZVJnVUpuNUVsblZ1cGJYZWcwM2E1bTtIWHRiQ2pwV0VwemJ4NFlYcDlzTndSeFRNanpwdDhMMTIrS2RGZGdGd0RNZU1yREJ3PT0iLCJtYWMiOiI0NWUwYzc1TY4ODI3ZmY3ODY5NjliODkxODMyODIzMjQwNmNkNjljNTE2NzQxNmQ4MzhhNDljNTdjM2QwZGY1In0%3D
Run Code Online (Sandbox Code Playgroud)

但是当我尝试重新使用 cookie 时,它​​看起来像是重定向或其他东西,因为这就是我得到的:

    $ curl -b cookies.txt  https://my3account.three.ie/My_account_balance
    <html><head><title>302 Moved Temporarily</title></head>
    <body bgcolor="#FFFFFF">
    <p>This document you requested has moved temporarily.</p>
    <p>It's now at <a href="https://sso.three.ie/mylogin//login?auth-        
    required=seamless&amp;service=https&#37;3A&#37;F&#37;                   
    2Fmy3account.three.ie&#37;2FMy_account_balance">https://sso.three.ie/mylogin//login?auth-required=seamless&amp;service=https&#37;3A&#37;2F&#37;2Fmy3account.three.ie&#37;2FMy_account_balance</a>.</p>
Run Code Online (Sandbox Code Playgroud)

我不明白这里发生了什么。有没有人知道出了什么问题,或者更好,如何解决这个问题?

谢谢

Car*_*ruz 7

他们的网站可能通过首先将它们重定向到登录页面来验证存储在 cookie 中的会话。然后,他们的登录页面将重定向回在重定向期间设置为“服务”参数的相应页面。

默认情况下,Curl 不遵循重定向。使用-L选项覆盖它:

$ curl -L -b cookies.txt https://my3account.three.ie/My_account_balance

参考