我想用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。
请有人告诉我如何发布与浏览器完全相同的内容。
我缺少什么卷曲选项。
我很抱歉我的英语。
答案 0 :(得分:0)
我个人认为cURL很难处理。 IMO使用像guzzlehttp / guzzle这样的库(我让你谷歌吧),以面向对象的方式包装cURL会更容易。它将允许您使用这种代码创建请求:
$httpClient = new GuzzleHttp\Client;
$login = $httpClient->post('http://www.example.com/login.php', $optionsArray);
免责声明:这只是一个例子,它显然不是您需要的代码。不要使用我的代码并阅读官方文档。
顺便说一下,许多登录表单都使用CSRF protection,但不允许您以此方式登录。