【问题标题】:Php curl post exactly like the browserphp curl post 跟浏览器一模一样
【发布时间】:2016-04-09 13:26:32
【问题描述】:

我想用 PHP curl 登录,我想我像浏览器一样发布到网站,但我无法登录。

这就是我发布网站的方式

$curl = curl_init();
$optArray = array(
  CURLOPT_URL => 'http://www.example.com/login.php',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_VERBOSE=> true,
  CURLOPT_NOBODY=> true,
  CURLOPT_HEADER=> true,
  CURLOPT_USERAGENT=> 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.2 (KHTML, like Gecko) Safari/125.8',
  CURLOPT_COOKIEFILE => 'path of the cookie file with write permissions ',
  CURLOPT_COOKIEJAR => 'path of the cookie file with write permissions',
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => false,
  CURLOPT_FOLLOWLOCATION => true
  CURLOPT_REFERER => 'the referer'
  CURLOPT_POST => TRUE,
  CURLOPT_POSTFIELDS => 'username=xxx&password=xxx'
);

curl_setopt_array($curl , $optArray);
$result = curl_exec($curl);
curl_close($curl);

$result 变量包含 http://www.example.com/login.php 宽度不变的 HTML。

请有人告诉我如何像浏览器一样发布。

我缺少什么 curl 选项。

我很抱歉我的英语不好。

【问题讨论】:

  • 请在您的问题中添加尝试此操作时会发生什么。

标签: php curl cookies


【解决方案1】:

我个人认为cURL非常难处理。 IMO 使用像 guzzlehttp/guzzle 这样的库要容易得多(我让你用谷歌搜索它),它以面向对象的方式包装 cURL。它会让你用这种代码创建请求:

$httpClient = new GuzzleHttp\Client;
$login = $httpClient->post('http://www.example.com/login.php', $optionsArray);

免责声明:这只是一个示例,它显然不是您需要的代码。不要使用我的代码,而是阅读官方文档。

顺便说一句,许多登录表单使用CSRF protection,不允许您以这种方式登录。

【讨论】:

  • 感谢 pimolo 的回复,我会试试 GuzzleHttp 库。
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-12
  • 2019-11-23
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多