使用SSO用户/密码进行卷发

时间:2019-02-08 14:09:09

标签: url curl automated-tests

我正在尝试向网站添加监视以检查其是否有效。

当我转到https://yy-dev.zzz.com/home时-它要求我提供用户名/密码以便将SSO导入应用程序。

如何使用CURL或类似的命令行实用程序来做到这一点?如何提供SSO用户/通行证?

尝试自动化测试。

1 个答案:

答案 0 :(得分:1)

例如,如果您的网站支持HTTP Basic authenticationHTTP Digest authenticationHTTP NTLM authentication,则curl具有登录本机支持,例如

curl -u name:passwd https://yy-dev.zzz.com/

但是 那里的绝大多数网站都有自己的基于http的自定义登录协议,并且不支持上述任何方案。一些网站可以使用简单的HTTP Post参数轻松通过libcurl登录,例如php / libcurl:

<?php
$ch=curl_init();
curl_setopt_array($ch,array(
    CURLOPT_POST=>1,
    CURLOPT_COOKIEFILE=>'', // enables cookie handling, most websites use cookies for logins
    CURLOPT_POSTFIELDS=>array(
        'username'=>'whatever',
        'password'=>'whatever',
    ),
    CURLOPT_URL=>'https://yy-dev.zzz.com/login',
));
curl_exec($ch);

许多站点在允许登录之前需要使用csrf令牌和有效的cookie会话,例如

<?php
$ch=curl_init();
curl_setopt_array($ch,array(
    CURLOPT_COOKIEFILE=>'', // enables cookie handling, most websites use cookies for logins
    CURLOPT_URL=>'https://yy-dev.zzz.com/login',
    CURLOPT_RETURNTRANSFER=>1
));
$html=curl_exec($ch);
$domd=@DOMDocument::loadHTML($html);
$csrf_token=$domd->getElementById("csrf_token")->getAttribute("value");
curl_setopt_array($ch,array(
    CURLOPT_POST=>1,
    CURLOPT_POSTFIELDS=>array(
        'username'=>'whatever',
        'password'=>'whatever',
        'csrf_token'=>$csrf_token
    ),
    CURLOPT_URL=>'https://yy-dev.zzz.com/login',
));
echo curl_exec($ch); // logged in!

...,有些网站使其登录变得困难” ,例如https://gmail.com,这里有300行代码。..仅登录gmail.com:{{3 }}

您需要弄清楚网站的登录协议。并且因为您既未发布网站链接(因此我们SO社区无法自己查看),也未发布网站使用的登录协议的分析,所以我投票决定关闭您的问题,没有足够的信息来找到解决方案。