首页  >  文章  >  后端开发  >  如何使用Curl登录带有SSL和Cookie的网站?

如何使用Curl登录带有SSL和Cookie的网站?

Patricia Arquette
Patricia Arquette原创
2024-11-10 01:46:03335浏览

How to Log In to Websites with SSL and Cookies Using Curl?

如何使用 SSL 和 Cookie 通过 Curl 登录

问题:

登录使用 Curl 的网站,特别是 barnesandnoble.com,并不成功。返回页面时没有错误,但电子邮件字段填充了输入的初始电子邮件。将登录网址更改为非 HTTPS 网站(即 eBay)即可成功登录。

原因:

潜在原因包括:

  • ASP/ASPX 网站与 Curl 使用的方法在处理 cookie 和 _state 方面的差异
  • 帖子字符串中的电子邮件和密码缺少 urlencoded URL 参数
  • 错误处理“x”登录 URL 中的值

解决方案:

以下代码解决了这些问题并演示了使用 Curl、SSL 和 cookie 成功登录:

<p>//...<br>// 为简洁起见,省略了之前的卷曲选项<br>//...</p><p>// 获取表单字段<br>$fields = getFormFields($content);</p><p>// 设置电子邮件和密码<br>$fields['emailAddress'] = $EMAIL;<br>$fields['acctPassword'] = $PASSWORD; </p><p>// 获取 x 值<br>if (preg_match('/op.asp?x=(d )/i', $content, $match)) {</p><p> }</p><p>// 设置带有 x 值的登录 URL<br>$LOGINURL = "https://cart2.barnesandnoble.com/mobileacct/op.asp?x=$x";</p><p> // 设置 POST 字段<br>$POSTFIELDS = http_build_query($fields);</p><p>// 更改 URL 为登录 URL<br>curl_setopt($ch, CURLOPT_URL, $LOGINURL);</p><p> // 设置发布选项<br>curl_setopt($ch, CURLOPT_POST, 1);<br>curl_setopt($ch, CURLOPT_POSTFIELDS, $POSTFIELDS);</p><p>// 执行登录<br>$result = curl_exec( $ch);  </p><p>print $result;</p><p>//...<br>

说明:

  • getFormFields():从登录表单中提取隐藏的输入。
  • 设置电子邮件和密码:设置适当的电子邮件和密码值。
  • 获取 x 值:从登录 URL 中检索“x”值,以便在正确的登录 URL 中使用。
  • 使用 x 值设置登录 URL:构造使用获取的“x”值正确的登录 URL。
  • 设置 POST 字段:将表单字段转换为 POST 的查询字符串。
  • 将 URL 更改为登录 URL 并设置发布选项:配置登录请求的 Curl 句柄。
  • 执行登录:执行登录请求。

通过实现通过这些更改,尽管使用 HTTPS 且 cookie 处理存在潜在差异,Curl 仍可以成功登录。

以上是如何使用Curl登录带有SSL和Cookie的网站?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn