我如何登录网站并保存Cookie?

时间:2019-03-29 23:51:03

标签: php curl cookies

我正在尝试使我创建的登录系统自动化。 我想登录后在另一个代码中使用以获取cookie。 我现在如何获得此Cookie:我手动登录该站点,获得第一个Cookie,转到第二页,以生成第二个Cookie。

在这里搜索了一些文章之后,将一些代码放在一起,没有成功。使用小提琴获取登录参数,如下所示:perfil = 1&txtLogin = *****&txtSenha = *****&envia = 1

<?php
$loginUrl = 
'https://www.comprasnet.gov.br/seguro/loginPortalFornecedor.asp';
define('perfil', '1');
define('txtLogin', '*****');
define('txtSenha', '*****');
define('envia', '1');
define('USER_AGENT', 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/35.0.2309.372 Safari/537.36');
define('COOKIE_FILE', 'cookie.txt');
define('LOGIN_FORM_URL', 
'https://www.comprasnet.gov.br/seguro/loginPortalFornecedor.asp');
define('LOGIN_ACTION_URL', 
'https://www.comprasnet.gov.br/seguro/loginPortalFornecedor.asp');
$postValues = array(
'perfil' => perfil,
'txtLogin' => txtLogin,
'txtSenha' => txtSenha,
'envia' => envia
);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, LOGIN_ACTION_URL);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues));
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($curl, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE) );
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_REFERER, LOGIN_FORM_URL);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);

curl_exec($curl);

if(curl_errno($curl)){
throw new Exception(curl_error($curl));
}

curl_setopt($curl, CURLOPT_URL, 
'https://www.comprasnet.gov.br/pregao/fornec/Acompanhar.asp');

curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE);

curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

echo curl_exec($curl);
?>
'

我想要的是这段代码从该网站保存cookie,如果可能的话,可以采用以下格式:ASPSESSIONIDSEDTDDRT = KGJKDBOCKJEIPMNCMOGFJCBD; ASPSESSIONIDSGCQADQT = GAKNEBOCNLIHEDGKNIKHECPH。 我不了解php,请在此处阅读一些文章,以尝试编写这段代码。

1 个答案:

答案 0 :(得分:0)

我更改了编码,现在我可以登录并将cookie保存到txt文件。在有效的代码下面。

<?php
$url = "https://www.comprasnet.gov.br/seguro/loginPortalFornecedor.asp";
$referer = "...";
$user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36";
$url_notas = "https://www.comprasnet.gov.br/pregao/fornec/Acompanhar.asp";
$referer_notas = "...";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $referer);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'perfil=1&txtLogin=xxxxx&txtSenha=xxxxx&envia=1');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__). '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIESESSION, true);

print_r(curl_exec($ch));
print_r(curl_errno($ch));
print_r(curl_getinfo($ch));

echo "<hr>";

curl_setopt($ch, CURLOPT_URL, $url_notas);
curl_setopt($ch, CURLOPT_REFERER, $referer_notas);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie2.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__). '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIESESSION, true);

print_r(curl_exec($ch));
print_r(curl_errno($ch));
print_r(curl_getinfo($ch));
?>

现在我还有其他问题。登录后会自动显示重定向页面并停止代码。成功登录到https://www.https://www.comprasnet.gov.br/seguro/loginPortalFornecedor.asp后,它会转到https://www.comprasnet.gov.br/intro.htm,但是当我运行mu代码时,它将登录并转到https://127.0.0.1/intro.htm。我该如何阻止它转到此页面,所以我可以在它下面实现一些代码。