Php curl post完全像浏览器一样

时间:2016-04-09 13:26:32

标签: php curl cookies

我想用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。

请有人告诉我如何发布与浏览器完全相同的内容。

我缺少什么卷曲选项。

我很抱歉我的英语。

1 个答案:

答案 0 :(得分:0)

我个人认为cURL很难处理。 IMO使用像guzzlehttp / guzzle这样的库(我让你谷歌吧),以面向对象的方式包装cURL会更容易。它将允许您使用这种代码创建请求:

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

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

顺便说一下,许多登录表单都使用CSRF protection,但不允许您以此方式登录。