Речь идет про эту заглушку:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex, nofollow">
<title>One moment, please...</title>
<style>
body {
background: #F6F7F8;
color: #303131;
font-family: sans-serif;
margin-top: 45vh;
text-align: center;
}
</style>
</head>
<body>
<h1>Please wait while your request is being verified...</h1>
<form id="wsidchk-form" style="display:none;" action="/z0f76a1d14fd21a8fb5fd0d03e0fdc3d3cedae52f" method="GET">
<input type="hidden" id="wsidchk" name="wsidchk"/>
</form>
<script>
(function(){
var west=+((+!+[])+(+!+[]+!![]+[])+(+!+[]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+[])),
east=+((+!+[]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+[])),
x=function(){try{return !!window.addEventListener;}catch(e){return !!0;} },
y=function(y,z){x() ? document.addEventListener('DOMContentLoaded',y,z) : document.attachEvent('onreadystatechange',y);};
y(function(){
document.getElementById('wsidchk').value = west + east;
document.getElementById('wsidchk-form').submit();
}, false);
})();
</script>
</body>
</html>
Мне ее нужно определить по косвенным признакам, те без чтения контента.
Я в последнее время увлекся поиском уязвимостей за вознаграждение. Раньше я пользовался сторонними средствами типа httpx. Но эта утилита убога чуть менее чем полностью и не умеет обходить тот же Clownflare, поэтому в 30% результатов я видел что-то типа:
{/* ... */"title":"One moment, please..."/* ... */}
Я написал свою утилиту httpscan. Это просто кросс-компиляция каких-то скриптов, используемых мною ранее. Так вот ее легко настраивать для поиска дампов, бекапов, конфигов, которые по чье-то невнимательности оказались в публичном доступе (полностью по вине админов и прочих жопоруков). Ну в общем у меня за обход проверки клауда с теми скобками отвечает метод bypass_cloudflare_challenge, а за детектипрование заглушки от клауда - detect_cloudflare_challenge. Я с дебаггером на паре десятков сайтов под клаудом проверил свой http-сканер и так не смог как-то по заголовкам научиться точно определять эту заглушку. Клауд не всегда отдает заголовок Server: cloudflare
, так же какие-то специфические заголовки где-то присутствуют, а где-то нет. Сейчас я делаю так: если есть заголовок Cache-Control
и он содержит no-cache
, то это 100% динамический контент, то читаем содержимое страницы, ищем в ней подстроку One moment, please...
, если она найдена, то парсим нужные данные типа action
формы и двух переменных east
и west
(видимо отсылки к негритянским rape-бандам east coast и west coast, которые в разгар войны замочили главную гангста парайдайзу). Так вот в чем проблема этого метода: если какой-то наркоман отдаст 20 гиговый архив с no-cache
, то мой пека уйдет в своп и не выйдет из него…