Как исправить ошибку Cloudflare «Пожалуйста, включите куки» используя PHP Curl - PullRequest
0 голосов
/ 23 января 2019

При локальном использовании почтальона на моей машине я могу без проблем отправить запрос и получить ответ. Из-за неверного токена я отправляю API, я должен получить его обратно.

{
    "status": "Error",
    "message": "Invalid API Token"
}

Используя утилиту почтальона, чтобы сгенерировать код php curl, чтобы сделать этот запрос, я получаю это.


$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://app.mobilecause.com/api/v2/reports/transactions.json",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_POSTFIELDS => "",
    CURLOPT_COOKIESESSION => true,
    CURLOPT_COOKIEFILE => "cookie.txt",
    CURLOPT_COOKIEJAR => "cookie.txt",
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => array(
        'Authorization: Token token="test_token"',
        "Content-Type: application/x-www-form-urlencoded",
        "cache-control: no-cache",
    ),
));

curl_setopt($curl, CURLOPT_VERBOSE, true);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
    echo "cURL Error #:" . $err;
} else {
    echo $response;
}

Запуск этого кода на моем веб-сервере приводит к тому, что возвращается тело страницы, являющееся целевой страницей с облачным светом, в частности это.

Please enable cookies.
One more step
Please complete the security check to access app.mobilecause.com
Why do I have to complete a CAPTCHA?
Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.

What can I do to prevent this in the future?
If you are on a personal connection, like at home, you can run an anti-virus scan on your device to make sure it is not infected with malware.

If you are at an office or shared network, you can ask the network administrator to run a scan across the network looking for misconfigured or infected devices.

Cloudflare Ray ID: RAY_ID • Your IP_REDACTED • Performance & security by Cloudflare

Я не могу объяснить, почему это происходит. У меня есть действительный файл cookie.txt, в который выполняется запись, но кажется, что в нем отсутствует содержимое.

Файл cookie, который записывается с помощью этого запроса и хранится в файле cookie.txt, выглядит следующим образом. (Отредактировано потенциально конфиденциальная информация.)


#HttpOnly_.app.mobilecause.com  TRUE    /   FALSE   shortStringOfNumbers    __cfduid    longStringOfNumbers

Печенье, сгенерированное почтальоном при выполнении команды через почтальона, выглядит следующим образом. (Отредактировано потенциально конфиденциальная информация.)

__cfruid=longStringOfNumbers-shortStringOfNumbers; path=/; domain=.app.mobilecause.com; HttpOnly; Expires=Tue, 19 Jan 2038 03:14:07 GMT;
__cfduid=longStringOfNumbers; path=/; domain=.app.mobilecause.com; HttpOnly; Expires=Thu, 23 Jan 2020 04:54:50 GMT;

По сути, кажется, что в php-запросе отсутствует файл cookie __cfruid. Может ли это быть причиной?

Копирование этого точного кода в http://phpfiddle.org/ создает ту же самую целевую страницу облачного сияния. Запуск этого локально на моей машине дает ожидаемый результат.

...