Авторизация на Хабре через PHP

D
На сайте с 28.06.2008
Offline
1104
264

Изучаю программные методы авторизации на сайтах.

На своих сайтах опробовал, захожу без проблем, но это обычные статейники на Джумле и ВП. Решил взять что посложнее и выбор пал на Хабр.

Изучил запросы, вроде нашел куда уходит запрос, вот мой код

$url = "https://freelance.habr.com/users/sign_in";
$body = file_get_contents($url);
preg_match('~authenticity_token" type="hidden" value="(.*)" />~msU',$body,$match);
$authenticity_token = urlencode($match[1]);

$login = 'login';
$password = 'password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://freelance.habr.com/users/sign_in');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'D:\OpenServer\domains\localhost\111\cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'D:\OpenServer\domains\localhost\111\cookie.txt');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user%5Bemail%5D=$login&user%5Bpassword%5D=$password&authenticity_token=$authenticity_token&_method=POST");
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$headers = array();
$headers[] = 'Connection: keep-alive';
$headers[] = 'Pragma: no-cache';
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Sec-Ch-Ua: \" Not A;Brand\";v=\"99\", \"Chromium\";v=\"96\", \"Yandex\";v=\"22\"';
$headers[] = 'Sec-Ch-Ua-Mobile: ?0';
$headers[] = 'Sec-Ch-Ua-Platform: \"Windows\"';
$headers[] = 'Origin: https://freelance.habr.com';
$headers[] = 'Upgrade-Insecure-Requests: 1';
$headers[] = 'Dnt: 1';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.174 YaBrowser/22.1.2.834 Yowser/2.5 Safari/537.36';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
$headers[] = 'Sec-Fetch-Site: same-origin';
$headers[] = 'Sec-Fetch-Mode: navigate';
$headers[] = 'Sec-Fetch-User: ?1';
$headers[] = 'Sec-Fetch-Dest: document';
$headers[] = 'Referer: https://freelance.habr.com/users/sign_in';
$headers[] = 'Accept-Language: ru,en;q=0.9,ba;q=0.8,it;q=0.7,pt;q=0.6,de;q=0.5,uk;q=0.4,cy;q=0.3,mt;q=0.2,sr;q=0.1,bg;q=0.1';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
var_dump($result);

В итоге

Есть мысли, что упускаю?


C
На сайте с 04.02.2005
Offline
277
#1
Dram :
"user%5Bemail%5D=
именно так?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий