Intereting Posts
Как интегрировать PHP / Python Interpreter в Notepad ++ Почему этот PHP-код просто эхо «Array»? Неустранимая ошибка: вызов функции-члена count () в булевом Использование триггера в Oracle для регистрации изменений в таблице Переменная «ошибка» не существует в FOSUserBundle :: layout.html.twig в строке 5 Что произойдет, если пользователь выйдет из браузера или сменит страницу до того, как будет выполнен запрос AJAX simplexml_load_file ampersand в url Наследование Php, динамические свойства и новый статический () конструктор передача значения между двумя файлами php Отправка строковых данных в файл PHP на сервере: строка не отправляется? Создание интерфейса в PHP, который может указать тип, чтобы определить, какой класс использовать Как обновлять настраиваемые параметры программно в пурпуре? TripleDES Шифрование на C # и PHP не выходит одинаково (PKCS7, ECB)? Как запустить cronjob каждые X минут? Защитите файл Excel с помощью PHPExcel

curl_getinfo возвращает код статуса HTTP 200 с несуществующими сайтами

Я проверяю, что сайт сайта запущен и проверен на наличие кода статуса HTTP 200 :

<?php $url = 'www.proxyserver-demo.com'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_exec($ch); $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if (200==$retcode) { echo "All's well"; } else { echo "not so much"; } ?> 

Однако на каждом сайте, который я пытаюсь сделать, даже несуществующие возвращают 200 OK статус без ошибок, что не должно быть возможным в случае несуществующих. (мой код всегда выводит «Все хорошо»)

Моя ОС – Centos linux, что может быть здесь?

Solutions Collecting From Web of "curl_getinfo возвращает код статуса HTTP 200 с несуществующими сайтами"

извините за злоупотребление полем ответа для того, что, вероятно, должно быть комментарием, но я не могу представить, как правильно представить эту информацию в противном случае. Я, честно говоря, еще не знаю, как выбить их комментарии в любую правильно отображаемую и отформатированную фигуру. : – |

Во всяком случае, поскольку ваш код должен работать нормально, но для вас он всегда перенастраивает «все в порядке», пока вы проверяете ответ HTTP, может быть, ваш интернет-провайдер делает DNS-highjacking , что в основном возвращает фальшивые данные ip-адреса, перенаправление вы на свой сервер, как правило, за денежную прибыль под видом дружелюбия. (ISP-страница, которая показывает, что «эта страница не существует» в сочетании с объявлениями или предложением таких услуг, как регистрация домена и т. Д.)

простой способ тестирования – просто запросить данные DNS с помощью приложения, такого как dig . Запрос на правильно функционирующий DNS-сервер для несуществующего домена должен вернуть NXDOMAIN в качестве его статуса:

поэтому, когда мы проверяем полностью фальшивый домен notexisting.fake с помощью следующей команды: dig A notexisting.fake. , это то, что он обычно должен дать:

 harald@Midians_Gate:~$ dig A notexisting.fake. ; <<>> DiG 9.7.3 <<>> A notexisting.fake. ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28725 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;notexisting.fake. IN A ;; AUTHORITY SECTION: . 1780 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2012061700 1800 900 604800 86400 ;; Query time: 24 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Sun Jun 17 18:05:10 2012 ;; MSG SIZE rcvd: 109 

как вы можете видеть, прося об этом несуществующем домене notexisting.fake. возвращает нас

 ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28725 

Если мы запрашиваем google.com с помощью dig A google.com.

 harald@Midians_Gate:~$ dig A google.com. ; <<>> DiG 9.7.3 <<>> A google.com. ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13223 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 300 IN A 74.125.132.138 google.com. 300 IN A 74.125.132.139 google.com. 300 IN A 74.125.132.101 google.com. 300 IN A 74.125.132.113 google.com. 300 IN A 74.125.132.100 google.com. 300 IN A 74.125.132.102 ;; Query time: 29 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: Sun Jun 17 18:05:20 2012 ;; MSG SIZE rcvd: 124 

наш запрос возвращает нам правильный NOERROR

 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13223 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0 

и возвращает нам ip-адрес, найденный для записи A

 ;; ANSWER SECTION: google.com. 300 IN A 74.125.132.138 google.com. 300 IN A 74.125.132.139 google.com. 300 IN A 74.125.132.101 google.com. 300 IN A 74.125.132.113 google.com. 300 IN A 74.125.132.100 google.com. 300 IN A 74.125.132.102 

Поэтому, если ваш запрос на поддельный домен возвращает ip-адрес, вы знаете, что проблема связана с вашим DNS, и ваш isp, без сомнения, перенаправляет каждый несуществующий запрос на собственный сервер, возиться с вашей «стратегией моего сайта», поскольку вы получите статус 200 OK, но это будет эффективно от самозванца.

Если это так, вы можете:

  • измените свой DNS-сервер: используйте Google Public DNS (8.8.8.8 и 8.8.4.4) или opendns (208.67.222.222 и 208.67.220.220)
  • мотивировать / жаловаться на ваш isp, чтобы они могли изменить эту политику или предоставить вам собственный DNS-сервер без перенаправления
  • запустите свой собственный DNS-сервер для личного поиска, если это разрешено в вашей сети.