Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
$ch = curl_init();
curl_setopt( $ch, CURLOPT_HEADER, 1 );
$curlResult = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch );
if ($code == 502 || $code == 503){
echo 'Выпал код 502 или 503'
}
Добавляете такую опцию curl_setopt( $ch, CURLOPT_HEADER, 1 ). В результате curl будет выдавать ответ с заголовками.
Из заголовков можно выпить ответ сервера.PHP:$ch = curl_init(); curl_setopt( $ch, CURLOPT_HEADER, 1 ); $curlResult = curl_exec($ch); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close ($ch ); if ($code == 502 || $code == 503){ echo 'Выпал код 502 или 503' }
Далее , если выпал нужный код ошибки, просто повторно делается запрос на получение страницы или таймаут и запрос.
Насколько я читал, там выдается какое-то автоматически сгенерированное выражение, которое браузер должен посчитать и выдать ответ, или я неправ?cloudflare не получится полностью автоматически обойти используя cURL,
там некоторые заголовки устанавливаются "на лету" с помощью JavaScript,
который cURL обрабатывать не умеет.
советую посмотреть в сторону Для просмотра ссылки Войдиили Зарегистрируйся или Для просмотра ссылки Войдиили Зарегистрируйся
Насколько я читал, там выдается какое-то автоматически сгенерированное выражение, которое браузер должен посчитать и выдать ответ, или я неправ?
Как понял браузер должен расчитать математическое выражение из javascript и передать его в форму, если верно то получишь куку
А как это в курл реализовать?
function request($url, $post = array()) {
$headers[] = 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0';
$headers[] = 'Accept: application/json, text/javascript, */*; q=0.01';
$headers[] = 'Accept-Language: ru,en;q=0.5';
$headers[] = 'Connection: keep-alive';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if(count($post) > 0) {
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$data = curl_exec($ch);
return $data;
}
$url = 'http://.....';
$data = request($url);
preg_match('/<form id="ChallengeForm" .+ name="act" value="(.+)".+name="jschl_vc" value="(.+)".+<\/form>.+jschl_answer.+\(([0-9\+\-\*]+)\);/Uis', $data, $out);
if(count($out) > 0) {
eval("\$jschl_answer=$out[3];");
$post['act'] = $out[1];
$post['jschl_vc'] = $out[2];
$post['jschl_answer'] = $jschl_answer;
sleep(5);
$data = request($url, $post);
}
var_dump($data);