Добрый вечер, я хотел подключиться к сайту https://accounts.nintendo.com/ через твиттер с помощью cURL, поэтому я сначала сделал GET-запрос на странице подключения к сайту nintendo, чтобы получить csrf_token, а затем POST-запрос к URL-адресу действия. формы сайта Nintendo для подключения через твиттер.
Обычно, когда все идет хорошо, запрос на ответ должен отправлять мне обратно: 302 Найдена ссылка oAuth для связи со мной через твиттер.
Я пытался изменить userAgent и заголовок
<?php
include('simple_html_dom.php');
// SHOW THE PAGE TO GET CSRF TOKEN
$ch = curl_init();
$url = 'https://accounts.nintendo.com/login';
curl_setopt_array($ch,
array(
CURLOPT_URL => $url,
CURLOPT_CAINFO => dirname(__FILE__)."/cacert.pem",
CURLOPT_COOKIESESSION => false,
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36",
CURLOPT_HTTPHEADER => array(
'Host: accounts.nintendo.com',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
'Pragma: ',
'Connection: keep-alive',
),
CURLINFO_HEADER_OUT => true,
CURLOPT_COOKIEFILE => dirname(__FILE__) . "/cookies.txt",
CURLOPT_COOKIEJAR => dirname(__FILE__) . "/cookies.txt",
CURLOPT_FRESH_CONNECT => false,
// The data to transfer with the response.
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
)
);
$data = curl_exec($ch);
// PARSER THE TOKEN CSRF
$dom = new simple_html_dom();
$html = $dom->load($data);
foreach($html->find('li[class="LoginForm_snsButton LoginForm_snsButton-row LoginForm_snsButton-twitter"] input[name="csrf_token"]') as $element)
{
$csrf_token = $element->value.'<br/>';
}
curl_close($ch);
//SEND POST REQUEST
$ch2 = curl_init();
$url = 'https://accounts.nintendo.com/federation/twitter';
$postData = array(
"post_federation_redirect_uri" => "https://accounts.nintendo.com/",
"post_federation_reauthenticate" => "",
"redirect_after" => "5",
"csrf_token" => $csrf_token,
"display" => ""
);
curl_setopt_array($ch2,
array(
CURLOPT_URL => $url,
CURLOPT_CAINFO => dirname(__FILE__)."/cacert.pem",
CURLOPT_COOKIESESSION => false,
CURLOPT_USERAGENT => "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
CURLOPT_COOKIEFILE => dirname(__FILE__) . "/cookies.txt",
CURLOPT_COOKIEJAR => dirname(__FILE__) . "/cookies.txt",
CURLOPT_FRESH_CONNECT => false,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => http_build_query($postData),
CURLINFO_HEADER_OUT => true,
// The data to transfer with the response.
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true,
)
);
$exec = curl_exec($ch2);
$header = curl_getinfo($ch2);
echo $header['request_header'].'</br></br></br>';
echo $header['header_size'];
echo $exec;
curl_close($ch2);
?>
проблема в том, что я получаю хороший 403 Forbidden (я не знаю, если это потому, что я делаю запрос от localhost), вот экран, показывающий заголовок запроса, заголовок ответа и содержание ответа сайта : http://www.noelshack.com/2019-15-6-1555110358-screenshot-1.jpg