PHP - Как мне поместить X-CSRF-TOKEN в заголовки? - PullRequest
1 голос
/ 23 февраля 2020

Как мне поставить $ token или x-csrf-token на заголовки?

Сообщение curl работает, когда я ставлю x-csrf -token в заголовках вручную.

Что мне нужно сделать, чтобы или x-csrf-token автоматически вставлять в заголовки?

Когда я создаю новую запись curl, которая получает токен, и когда я помещаю токен-автомат c в заголовки, ответ скручивания будет 404 неверный запрос

Это мой сценарий:

$Thing = $_GET['Thing'];
$username = $_GET['username'];
$password = $_GET['password'];

$login = array(
    "cvalue" => $username,
    "ctype" => "Username",
    "password" => $password,
    "captchaToken" => $Thing,
    "captchaProvider" => "PROVIDER_ARKOSE_LABS"
);

$curl = curl_init('https://auth.roblox.com/v2/login'); // There are many links you can login from
curl_setopt_array($curl,array(
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_SSL_VERIFYPEER => true,
    CURLOPT_POSTFIELDS => json_encode($login),
    CURLOPT_HEADER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 5,
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json; charset=utf-8',
        'Accept: application/json, text/plain, */*',
        'X-CSRF-TOKEN: '
    ),
    CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'


));

$response = curl_exec($curl);
$size = curl_getinfo($curl,CURLINFO_HEADER_SIZE);

curl_close($curl);


#$response1 = explode(" ", $response);

#$cookie = $response1[10];
#$search = ".ROBLOSECURITY=";
#$cookie1 = str_replace($search, '', $cookie);

$headers = substr($response,0,$size);
$array = explode("\n",$headers);
foreach($array as $data){
    if(strpos($data,'csrf')){
        $info = explode(' ',$data);
        break;
    }
}

$csrf = $info[1];
$token = $csrf;
print_r($token);

print_r($response);

1 Ответ

0 голосов
/ 23 февраля 2020

Нет способа автоматически присоединить пользовательские заголовки ко всем запросам CURL. Лучший способ - обернуть ваш код CURL в функцию и передать в качестве параметра нужный токен CSRF. Вот демонстрация:


function curl_call(array $params, string $csrf_token)
{
    ... curl code here...

    'X-CSRF-TOKEN: '. $csrf_token,

    ... remaining curl code here...
}

Затем, когда вы хотите сделать запрос CURL, вы можете вызвать функцию следующим образом:

curl_call(['url' => '...', etc], 'csrf token string here');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...