Неверный запрос 400 SEC-43

Имейте функцию (код ниже), чтобы проверить, что URL действительно существует, и столкнулся с тем, что не удается. Это работает отлично в браузере, хотя, поэтому мне очень любопытно Зачем этот URL не так, как он.

Я получаю ответ:

HTTP/1.1 400 Bad Request
content-length: 378
x-synthetic: true
expires: Thu, 01 Jan 1970 00:00:00 UTC
pragma: no-cache
cache-control: no-cache, must-revalidate
content-type: text/html; charset=UTF-8
connection: close
date: Sat, 25 Mar 2017 14:05:45 UTC
x-contextid: 1INsx8lY/G2fZ1ojZ
x-via: 1.1 echo105

<html>
<head>
<title>400 Bad Request</title>
<style> body { background-color: #F2F2F2; color: #3E3E3E; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 12px; } pre { word-wrap: break-word; } </style>
</head>
<body>
<h1>400 Bad Request</h1>
<p><pre>1INsx8lY/G2fZ1ojZ @ Sat, 25 Mar 2017 14:05:45 GMT</pre>
<p><pre>SEC-43</pre>
<p><pre></pre>
</body>
</html>

Загадочный контекстный идентификатор и метка времени постоянно меняются, но в остальном я получаю одно и то же.

  • Кажется, происходит независимо от того, с какой страницы я пытаюсь на этом сайте
  • Происходит как локально (xampp на windows), так и удаленно в веб-отеле, к которому у меня есть доступ (one.com, unix / lamp-type-stack)
  • Попытался настроить user-agent на копию моего Firefox, но там тоже ничего не помогло.
  • Бег curl -i -X HEAD https://www.bergenadventistkirke.com в терминале делает работа однако … но это только делает меня более смущенным …

Я пытался найти «плохой запрос» и «SEC-43», но все, что я, кажется, проснулся, это куча результатов, которые показывают ту же ошибку HTML. Нажатие на них приводит к неправильным сертификатам, другим ошибкам или их перенаправлению в другое место.

Кто-нибудь знает, что здесь происходит?

Malware? Какая-то волшебная не браузерная блокировка трафика?


Код

<?php
$c = curl_init();
curl_setopt_array($c, [
CURLOPT_URL => 'https://www.bergenadventistkirke.com',
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
]);
ob_start();
curl_exec($c);
curl_close($c);

header('content-type: text/plain; charset=utf-8');
echo ob_get_clean();

0

Решение

Они проверяют на User-Agent заголовок и возвращение обратно HTTP 400 Bad Request если они не видят один. curl в командной строке устанавливает пользовательский агент curl/7.46.0Вот почему это работает.

Пытаться:

$c = curl_init();
curl_setopt_array($c, [
CURLOPT_URL => 'https://www.bergenadventistkirke.com',
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_USERAGENT => "curl/7.46.0"]);
ob_start();
curl_exec($c);
curl_close($c);

header('content-type: text/plain; charset=utf-8');
echo ob_get_clean();
2

Другие решения

Других решений пока нет …