我正在尝试向网站添加监视以检查其是否有效。
当我转到https://yy-dev.zzz.com/home
时-它要求我提供用户名/密码以便将SSO导入应用程序。
如何使用CURL或类似的命令行实用程序来做到这一点?如何提供SSO用户/通行证?
尝试自动化测试。
答案 0 :(得分:1)
例如,如果您的网站支持HTTP Basic authentication
或HTTP Digest authentication
或HTTP 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社区无法自己查看),也未发布网站使用的登录协议的分析,所以我投票决定关闭您的问题,没有足够的信息来找到解决方案。