Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 37
1
RAD XE3+

Как взять содержимое странички сайта если выдает "Checking your browser before accessing"

21.03.2018, 17:21. Показов 2455. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет. Есть запрос на idhttp:

Delphi
1
2
3
4
5
6
7
8
9
IdHTTP:=TIdHTTP.Create(Nil);
      IdHTTP.AllowCookies := True;
      IdHTTP.HandleRedirects := true;
      IdHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
 
      try
      IdHTTP.Get(newURL, Stream); // тут ошибка 500
      except
      end;
необходимо опрашивать около 60ти сайтов. из них 2 - 3 не могу загрузить этой конструкцией, остальные исправно отдают код. Пока только 1 поток, ssl как видите подключен.

Изобразив такой подход
Delphi
1
2
3
4
5
6
7
8
9
10
11
...
IdHTTP.ConnectTimeout:= 10000;
...
 
Try
    s :=IdHTTP.Get(gourl);
Except
      on e:EIdHTTPProtocolException do begin
        errtext:=e.ErrorMessage;
      end;
  End;
иногда в "s" получаю нормальный код, но в 18 из 20ти попыток получаю e.ErrorMessage с кодом странички "Checking your browser before accessing"
полный ее код:
Кликните здесь для просмотра всего текста

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta name="robots" content="noindex, nofollow" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<title>Just a moment...</title>
<style type="text/css">
html, body {width: 100%; height: 100%; margin: 0; padding: 0;}
body {background-color: #ffffff; font-family: Helvetica, Arial, sans-serif; font-size: 100%;}
h1 {font-size: 1.5em; color: #404040; text-align: center;}
p {font-size: 1em; color: #404040; text-align: center; margin: 10px 0 0 0;}
#spinner {margin: 0 auto 30px auto; display: block;}
.attribution {margin-top: 20px;}
@-webkit-keyframes bubbles { 33%: { -webkit-transform: translateY(10px); transform: translateY(10px); } 66% { -webkit-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } }
@keyframes bubbles { 33%: { -webkit-transform: translateY(10px); transform: translateY(10px); } 66% { -webkit-transform: translateY(-10px); transform: translateY(-10px); } 100% { -webkit-transform: translateY(0); transform: translateY(0); } }
.bubbles { background-color: #404040; width:15px; height: 15px; margin:2px; border-radius:100%; -webkit-animation:bubbles 0.6s 0.07s infinite ease-in-out; animation:bubbles 0.6s 0.07s infinite ease-in-out; -webkit-animation-fill-mode:both; animation-fill-mode:both; display:inline-block; }
</style>

<script type="text/javascript">
//<![CDATA[
(function(){
var a = function() {try{return !!window.addEventListener} catch(e) {return !1} },
b = function(b, c) {a() ? document.addEventListener("DOMContentLoaded", b, c) : document.attachEvent("onreadystatechange", b)};
b(function(){
var a = document.getElementById('cf-content');a.style.display = 'block';
setTimeout(function(){
var s,t,o,p,b,r,e,a,k,i,n,g,f, rGCmUMm={"Ttani":+((!+[]+!![]+!![]+[])+(!+[]+!![]+!![]+!![]+!![]+!![]+!![]))};
t = document.createElement('div');
t.innerHTML="<a href='/'>x</a>";
t = t.firstChild.href;r = t.match(/https?:\/\//)[0];
t = t.substr(r.length); t = t.substr(0,t.length-1);
a = document.getElementById('jschl-answer');
f = document.getElementById('challenge-form');
;rGCmUMm.Ttani-=+((+!![]+[])+(+!![]));rGCmUMm.Ttani+=+((+!![]+[])+(!+[]+!![]+!![]+!![]+!![]));a.value = parseInt(rGCmUMm.Ttani, 10) + t.length; '; 121'
f.action += location.hash;
f.submit();
}, 4000);
}, false);
})();
//]]>
</script>


</head>
<body>
<table width="100%" height="100%" cellpadding="20">
<tr>
<td align="center" valign="middle">
<div class="cf-browser-verification cf-im-under-attack">
<noscript><h1 data-translate="turn_on_js" style="color:#bd2426;">Please turn JavaScript on and reload the page.</h1></noscript>
<div id="cf-content" style="display:none">

<div>
<div class="bubbles"></div>
<div class="bubbles"></div>
<div class="bubbles"></div>
</div>
<h1><span data-translate="checking_browser">Checking your browser before accessing</span> master.com.ua.</h1>

<p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
<p data-translate="allow_5_secs">Please allow up to 5 seconds&hellip;</p>
</div>

<form id="challenge-form" action="/cdn-cgi/l/chk_jschl" method="get">
<input type="hidden" name="jschl_vc" value="48a041c14daeafdd4afa43bc598aa6fa"/>
<input type="hidden" name="pass" value="1521640632.078-51pua6rSgK"/>
<input type="hidden" id="jschl-answer" name="jschl_answer"/>
</form>
</div>


<div class="attribution">
<a href="https://www.cloudflare.com/5xx-error-landing?utm_source=iuam" target="_blank" style="font-size: 12px;">DDoS protection by Cloudflare</a>
<br>
Ray ID: 3ff0ed057a0b8b46
</div>
</td>

</tr>
</table>
</body>
</html>



Большое любопытство представляют эти строки
HTML5
1
2
<input type="hidden" name="jschl_vc" value="48a041c14daeafdd4afa43bc598aa6fa"/>
<input type="hidden" name="pass" value="1521640632.078-51pua6rSgK"/>
Можно ли как-то преодолеть этот тест на javascript с помощью indy? либо как-то по другому взять код странички. Частота запросов к сайту около 1 в пару часов!!!!! т.е. никакого задалбывания не делаю.
могу предоставить линк может вы что нашаманите, или идеи какие будут.... пробовал синапс, он тоже на этом затарчивает.

добавлю: Среда разработки delphi 10.2 tokyo, indy 10.6.2.5366, ssl от 14.09.2016 (поправленные под delphi 10.2)

ХЕЛП!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2018, 17:21
Ответы с готовыми решениями:

Обход Checking your browser before
Ребята, кто-нибудь знает, как обойти эту защиту? Судя по всему, от ddos. Я парсю сайты, получаю...

Как сохранить содержимое Browser? и другие вопросы..
Ответьте пожалуйста на несколько вопросов: 1.Как сохранить содержимое Browser? 2.Я с помощью Inet...

Как поменять содержимое странички локальной сети?
Есть страничка в локальной сети содержащая одну цифру, как поменять эту цифру с любого компьютера...

Как прочитать содержимое странички вконтакте - вкладку с аудиозаписями какого-нибудь id ?
Как прочитать список аудиозаписей из контактов? Когда ввел логин и пароль контактов, зашел на...

2
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,130
Записей в блоге: 3
22.03.2018, 01:04 2
может в Header надо передавать имя браузера?
0
0 / 0 / 0
Регистрация: 08.03.2016
Сообщений: 37
24.03.2018, 00:44  [ТС] 3
Тут все просто. Это обычный тест на javascript. т.е. если мы бот (indy) то получив код инди завершает свою миссию, даже TWebBrowser и тот должен быть в отдельном потоке чтобы нормально запустить скрипт с таймером в 4 сек, ибо опять же получаем READYSTATE_COMPLETE и скрипт не срабатывает.

Смотрел сие чудо сниффером, нужно разобрать этот скрипт. все понятно кроме одного параметра. передаются две строки которые я указал в заголовке и еще одно - "jschl_answer=" и число.

Разобрав код не могу понять из чего состоит данная величина, и вот думаю как бы модифицировать скрипт до его выполнения в браузере, чтобы посмотреть что находится в переменных на каждом этапе. Так можно просто повторить алгоритм в делфи и остаться в рамках INDY без всяких TWebBrowser, что очень бы хотелось.

Есть у кого соображения как воспользоваться WebBrowser1BeforeScriptExecute? пробовал локально - не работает, привязан скрипт к урлу.
0
24.03.2018, 00:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2018, 00:44
Помогаю со студенческими работами здесь

Выдаёт checking file system при загрузке..
при загрузке стал выдавать вот это сообщение(которое на картинке) и пару раз зависал по истечению...

Lenovo Z500 выдаёт checking file system при загрузке
У меня со вчерашнего дня такая же проблема началась после включения компа выскакивает это сообщение...

Easy Balance Checking: код выдает правильный ответ, но валидацию не проходит
Задача https://www.codewars.com/kata/59d727d40e8c9dd2dd00009f/train/javascript Очень обидно...

Как взять содержимое коллекции?
Есть класс: public class DoctorsLoad { public string about { get; set; } ...

Web Browser: ссылки взять из TextBox (Multiline)
Хочу открыть каждую ссылку из TextBox1.Text в WebBrowser1,но не получается,открывается только...

Web Browser: часть ссылки взять из TextBox
Доброго время ! Столкнулся с проблемой , которую мои мозги не в силе решить . Так как я...

Как с использованием selenium открыть страницу любого сайта через Yandex Browser?
У меня стоит browser = webdriver.Chrome() он открывает страницы через Google Chrome, а мне нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru