Проверка доступности сайта на PHP/JavaScript

Содержание:
Проверка доступности сайта с помощью fopen()
Приведенный PHP скрипт пытается получить страницу по указанному url. Если ответ от сервера не поступит в течении 12 секунд (default_socket_timeout), то URL будет считаться НЕ доступным.
1 2 3 4 5 6 7 8 9 | ini_set ( 'default_socket_timeout' , '12' ); $fp = fopen ( $url , "r" ); $res = fread ( $fp , 500); fclose( $fp ); if ( strlen ( $res ) > 0) echo 'Ресурс ' . $url . ' доступен' ; else echo 'Ресурс ' . $url . ' НЕ доступен' ; |
Проверка ответа сервера при помощи библиотеки cURL (Libcurl)
Подключаемая библиотека cURL (в PHP она называется Libcurl) для работы с сетевыми протоколами HTTP. С ее помощью можно узнать ответ сервера и определить доступность запрашиваемого сайта. cURL работает практически на всех хостинг-площадках.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function check_domain( $domain ) { if (!filter_var( $domain , FILTER_VALIDATE_URL)) return false; $curlInit = curl_init( $domain ); curl_setopt( $curlInit , CURLOPT_CONNECTTIMEOUT, 12); curl_setopt( $curlInit , CURLOPT_HEADER, true); curl_setopt( $curlInit , CURLOPT_NOBODY, true); curl_setopt( $curlInit , CURLOPT_RETURNTRANSFER, true); $response = curl_exec( $curlInit ); curl_close( $curlInit ); if ( $response ) return true; return false; } //Вызов функции if (check_domain( $url )) echo 'Ресурс ' . $url . ' доступен' ; else echo 'Ресурс ' . $url . ' НЕ доступен' ; |
Проверка HTTP статуса ответа от сервера
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | function check_http_status( $url ) { $user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36' ; $ch = curl_init(); curl_setopt( $ch , CURLOPT_URL, $url ); curl_setopt( $ch , CURLOPT_USERAGENT, $user_agent ); curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); curl_setopt( $ch , CURLOPT_VERBOSE, false); curl_setopt( $ch , CURLOPT_TIMEOUT, 12); curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, false); curl_setopt( $ch , CURLOPT_SSLVERSION, 3); curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, false); $page = curl_exec( $ch ); $err = curl_error( $ch ); if (! empty ( $err )) return $err ; $httpcode = curl_getinfo( $ch , CURLINFO_HTTP_CODE); curl_close( $ch ); return $httpcode ; } $answer = check_http_status( $url ); echo 'Код статуса HTTP: ' . $answer . '. Ответ на запрос URL: ' . $url ; |
Примеры строк User Agent
Desktop браузеры:
- Mozilla Firefox 36 (Win 8.1 x64):
Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
- Google Chrome 53 (Win 10 x64):
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
- Google Chrome 40 (Win 8.1 x64):
Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
- Opera 40 (Win 10 x64):
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36 OPR/40.0.2308.62
- Opera 12.17 (Win 8 x64):
Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.17
- Apple Safari 5.1 (Win 8 x64):
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
- Internet Explorer 11 (Win 10 x64):
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
- Internet Explorer 11 (Win 8.1 x64):
Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; ASU2JS; rv:11.0) like Gecko
- Microsoft Edge (Win 10 x64):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
Мобильные браузеры:
- iPhone:
Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
- Android 2.3.5 (Philips W632):
Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; Philips W632 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Планшеты:
- iPad:
Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
Поисковые системы:
- Яндекс:
Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
- Google:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- Bing:
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
- Yahoo! Slurp:
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
- Mail.ru:
Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots)
- Sputnik:
Mozilla/5.0 (compatible; SputnikBot/2.3; +http://corp.sputnik.ru/webmaster)
Роботы, боты, анализаторы:
- Ahrefs:
Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)
- Majestic:
Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)
- SMTBot:
Mozilla/5.0 (compatible; SMTBot/1.0; +http://www.similartech.com/smtbot)
- linkdex:
Mozilla/5.0 (compatible; linkdexbot/2.2; +http://www.linkdex.com/bots/)
- Exabot:
Mozilla/5.0 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)
- StatOnline.ru:
Mozilla/5.0 (compatible; StatOnlineRuBot/1.0)
Проверка доступности Интернета на JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | setInterval( function () { var request_inCheck = new XMLHttpRequest(); request_inCheck.open( "GET" , window.location.pathname, true ); request_inCheck.timeout = 2000; request_inCheck.addEventListener( "readystatechange" , function () { if (request_inCheck.status == 0) { //Есть Интернет соединение } else { //Нет Интернет соединения } }); request_inCheck.send(); }, 10000); // Проверка каждые 10 секунд |
Пингуем сайт с умным использованием нативного Image объекта
Это работает на всех типах серверов: веб-серверы, FTP-серверы и игровые серверы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function Pinger(ip, callback) { if (! this .inUse) { this .inUse = true ; this .callback = callback this .ip = ip; var _that = this ; this .img = new Image(); this .img.onload = function () {_that.good();}; this .img.onerror = function () {_that.good();}; this .start = new Date().getTime(); this .timer = setTimeout( function () { _that.bad();}, 1500); } } |
353
раз уже помогла