我正在尝试使用 PHP CURL 编写登录函数以在以下站点中执行登录: https: //partners.mrfavorit.com/。当我查看网络请求时,平台似乎在 .NET 上。
首先,我发出一个 GET 请求来收集 cookie:
$ch = curl_init();
curl_setopt_array( $ch, array(
CURLOPT_URL => 'https://partners.mrfavorit.com/',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HEADER => true,
));
$a = curl_exec($ch);
preg_match_all('|Set-Cookie: (.*);|U', $a, $results);
$cookies2 = implode(';', $results[1]);
然后我将带有登录凭据的 POST 发送到相同的 URL,但它不起作用,请求返回 200 和登录页面 html 代码。
curl_setopt_array($ch, array(
CURLOPT_URL => "https://partners.mrfavorit.com/?&txtUserName=myusername&txtPassword=mypassword123",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HEADER => true,
CURLOPT_POSTFIELDS =>'',
CURLOPT_HTTPHEADER => array(
"Content-Type: application/json",
"Cookie: ".$cookies2
),
));
$r2 = curl_exec($ch);
print_r($r2);
失败的原因可能是什么?
这样做的最终目的是从系统内部的报表中收集数据。
HUWWW
肥皂起泡泡