2012-04-16 2 views
0

Скажем, я бегу stumbleupon.com, и пользователи могут отправлять сайты, которые нужно добавить в db сайтов. Есть ли способ, которым я могу написать программу, чтобы узнать, действительно ли сайт, добавленный пользователем, на самом деле является реальным сайтом? Или, если это приведет меня к 404, что я могу сказать «приветствовать, это был какой-то bugus» или, может быть, пользователь сделал ошибку при отправке URL-адреса? Или мне нужно поместить людей в свою зарплату, чтобы узнать, привел ли пользовательский веб-сайт мне 404?У всех 404 страниц есть что-то общее?/Страница 404 отличается от обычных страниц?

ответ

4

Код ответа с запросом - 404 не найден, а не 200 успешное сообщение, на которое вы получаете хороший ответ от сервера. Вы можете легко автоматизировать проверку.

+1

Обратите внимание, что в некоторых редких случаях неизвестные веб-админы, как известно, настраивают свои веб-серверы для возврата страницы «не найден» с кодом состояния 200. – Spacedman

1

Поскольку я мало знаю о python, я предлагаю решение на стороне клиента.

Вы можете проверить, является ли URL-адрес законным, как только пользователь отправит страницу. Может быть, вытащить сообщение «verification url» или что-то еще.

Используя this method, вы можете сделать перекрестный домен, чтобы узнать, действительно ли этот сайт. Затем вы можете открыть сообщение, которое попросит их исправить свою ошибку или разрешить отправку URL-адреса. Это решение использует Yahoo как прокси-сервер, но, как вы можете видеть, моя супер простая функция ниже, она работает.

function doAjaxCheck(url){ 
// if the URL starts with http 
if(url.match('^http')){ 

    //add a 'loading message here, or something'   

    // assemble the YQL call  
    $.getJSON("http://query.yahooapis.com/v1/public/yql?"+ 
      "q=select%20*%20from%20html%20where%20url%3D%22"+ 
      encodeURIComponent(url)+ 
      "%22&format=xml'&callback=?", 
    function(data){ 
     if(data.results[0]){ 
     alert('it is OK'); 
     } else { 
     alert('not OK'); 
     } 
    } 
); 
} else { 
    $.ajax({ 
    url: url, 
    timeout:5000, 
    success: function(data){ 
     alert('it is OK'); 
    }, 
    error: function(req,error){   
     if(error === 'error'){error = req.statusText;} 
     alert('not OK : ' + error); 
    } 
    }); 
} 
} 

Однако, все это, как говорится, я бы пошел с проверкой на стороне сервера для обеспечения надежности.

Смежные вопросы