PHP 使用 Curl 登录到 HTTPS 页面


PHP login to HTTPS page using Curl

我正在尝试使用 php curl 函数登录 https 网页"https://portal.opalonline.co.uk/Home/PortalCore/SignIn/SignIn.aspx"

但是我已经没有想法如何将值发布到此特定页面(用户名,密码)并"按'登录'。

$postfields = array('ctl00_MasterContentContentPane_Signin1_userID_txt'=>'email@address.com', 
            'ctl00_MasterContentContentPane_Signin1_password_txt'=>'somepassword123');
/* LOG IN TO TalkTalk ACCOUNT */
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://portal.opalonline.co.uk/Home/PortalCore/SignIn/SignIn.aspx?");   
curl_setopt($ch, CURLOPT_HEADER, false);
// curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
// curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); 
// curl_setopt($ch, CURLOPT_COOKIE, COOKIE_FILE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_POST, 1);  
var_dump($ch);
$string_exec = curl_exec($ch);
var_dump($string_exec);

我什至无法显示带有var_dump :(的页面.想法/建议非常感谢

首先,我认为你不能做这样的"数组"事情,因为这会使 PHP/CURL 创建多部分表单,而这不是这样的表单。以"名称=值&名称2=值2"样式提供数据。

然后,确保还提交表单中的所有隐藏字段。其中至少有四个。其中一个由HTML设置为您需要提取和设置的长值,并且还有一些javascript魔术可以设置其他一些。您可能需要使用浏览器的网络工具来窥探浏览器发送的确切内容,以便能够完美地模仿它。

登录页面会设置 Cookie,您可能需要在提交登录表单时传递这些 Cookie。因此,您需要首先获取(GET)登录表单页面以获取cookie,然后提交登录POST。

修复后,您应该更接近。如果这还不是全部,请继续将浏览器的请求与您的请求发送的内容进行比较,并确保它们尽可能相似。

在谷歌浏览器中打开网站,打开控制台,转到网络选项卡。

登录网站。您应该会在网络选项卡中看到该请求。右键单击它,选择"复制为 cURL"。它将为您提供一个命令行,以帮助您了解所需内容。