Jump to content

Заблокировали парсер по IP


Recommended Posts

  • VIP

К сайту городского портала подключен парсер берущий информацию с сайта кинотетра. На данный парсер перестал получать информацию, по причине блокировки IP адреса. Мой сайт находится на виртуальном хостинге. Что в этом случае можно сделать? Не ужели менять хостинг, хотя и его со временем заблокируют.

Link to post
Share on other sites

Есть вопрос? Задай его профессиональным веб-мастерам, SEO и другим специалистам!

  • VIP

 

 

Прокси-сервер (от англ. proxy — «представитель, уполномоченный») — служба (комплекс программ) в компьютерных сетях, позволяющая клиентам выполнять косвенные запросы к другим сетевым службам. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс (например, e-mail), расположенный на другом сервере. Затем прокси-сервер либо подключается к указанному серверу и получает ресурс у него, либо возвращает ресурс из собственного кэша (в случаях, если прокси имеет свой кэш). В некоторых случаях запрос клиента или ответ сервера может быть изменён прокси-сервером в определённых целях. Прокси-сервер позволяет защищать компьютер клиента от некоторых сетевых атак и помогает сохранять анонимность клиента.
Link to post
Share on other sites

В этом случае надо написать администрации сайта с которого велся парсинг с жалобной просьбой разблокировать ваш IP-адрес и вопросом о том, как можно получать информацию с их сайта легальным образом.

Link to post
Share on other sites

Идите на http://toster.ru/ там вам быстро помогут.

 

PS найдите в коде запрос на исходный код страницы и используйте:

$aContext = array('http' => array('proxy' => 'tcp://127.0.0.1:80','request_fulluri' => True,));
$cxContext = stream_context_create($aContext);
$open = file_get_contents("****", False, $cxContext));
Link to post
Share on other sites
  • VIP

WQP, вот часть кода. Не подскажите, что и куда нужно вставить.

 

//--------------------------CINEMA------------------------------------///

        if ($parserYacinema) {

            $url = "http://сайт.ru/cinema/";

            //logStr("загружено : ".print_r($page,true)." <br>");

            logStr("Подготавливаем...$url<br>");

            $shedulePage = loadPage($url);

 

            /*$moviePage = new DOMDocument();

            $moviePage->loadHTML($moviePageHTML);

            $moviePage->normalizeDocument();*/

 

            logStr("страница загружена. разбираем<br>");

            preg_match_all('/<div class="section">(.*)<\/div>/is', $shedulePage, $matches);

        /*    preg_match_all('/<ul class="tabs2">(.+?)<\/ul>/is', $shedulePage, $matches_uldate);

            preg_match_all('/ <li(.+?)>(.+?)<a class="simple_text" href="#(.+?)">(.+?)<\/span>(.+?)<\/a>/is', $matches_uldate[1][0], $matches_alldate);

 

         foreach ($matches_alldate[5] AS $aid=>$adate){ //run dates

            $dates = getDates($adate);*/

 

            //logStr("Дальше:.".print_r($movie_desc,true)." разбираем<br>");

 

 

            //preg_match_all('/<li class="active" id="tabs-1">(.+?)<\/li>/is', $shedulePage, $matches);

            //logStr("страница загружена. разбираем#".print_r($matches,true)."<br>");

            if (count($matches)==0){logStr("Расписания на $dateins пока нет<br>");}

            //preg_match_all('/<div class="videoBox-img">(.+?)<a href="(.+?)">/is', $matches[1][0], $matcheslist);

            preg_match_all('/<div class="videoBox-img">(.+?)<a href="(.+?)">/is', $shedulePage, $matcheslist);

 

           // logStr("страница загружена. разбираем##".print_r($matcheslist,true)."<br>");

 

 

            $events = array();

            foreach ($matcheslist[2] as $id=>$evlink){

                    /*$event['name'] = $evname;

                    $event['desc']="";

                    $event['fulldesc']="";*/

                    $url_det = "http://сайт.ru/".$evlink;

                    $shedulePage_det = loadPage($url_det);

                    logStr("страница $url_det загружена. разбираем  - с кратким описанием и полным описанием<br>");

                    preg_match_all('/<div class="title-page" style="margin-top: 10px;">(.+?)<h2>(.+?)<\/h2>/is', $shedulePage_det, $evname);

                    $event['name'] = $evname[2][0];

Link to post
Share on other sites
  • VIP

Вот код данной функции.

 

function loadPage ($url)
{
    if (!function_exists('curl_init'))
    {
        logStr("ERROR: CURL library not found!<br>");
        die('ERROR: CURL library not found!');
    }

    $ch = curl_init($url);
    logStr("#%<br>");
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU; rv:1.9.2) Gecko/20100115 AdCentriaIM/1.7 Firefox/3.6 GTB6 (.NET CLR 3.5.30729)");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $page = curl_exec($ch);

    if(!$page)
    {
        logStr("Ошибка curl ".curl_error($ch).'('.curl_errno($ch).')'."<br>");
    }
    else
    {
        logStr("Файл получен<br>");
    }
    curl_close($ch);

    $page = preg_replace("|(?:\ ){2,}|im"," ",$page);
    $page = preg_replace("|\t+|im","",$page);
    $page = preg_replace("|\r\n|im","\n",$page);
    $page = preg_replace("|\n+|im","\n",$page);
    return $page;
}

Link to post
Share on other sites

Придадим функции вид (замените её):  

function loadPage ($url,$proxy)
{
    if (!function_exists('curl_init'))
    {
        logStr("ERROR: CURL library not found!<br>");
        die('ERROR: CURL library not found!');
    }

    $ch = curl_init($url);
    logStr("#%<br>");
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU; rv:1.9.2) Gecko/20100115 AdCentriaIM/1.7 Firefox/3.6 GTB6 (.NET CLR 3.5.30729)");
	curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $page = curl_exec($ch);

    if(!$page)
    {
        logStr("Ошибка curl ".curl_error($ch).'('.curl_errno($ch).')'."<br>");
    }
    else
    {
        logStr("Файл получен<br>");
    }
    curl_close($ch);

    $page = preg_replace("|(?:\ ){2,}|im"," ",$page);
    $page = preg_replace("|\t+|im","",$page);
    $page = preg_replace("|\r\n|im","\n",$page);
    $page = preg_replace("|\n+|im","\n",$page);
    return $page;
}

Теперь в вернёмся к первому коду (самый первый который вы скинули) и найдём:

$url = "http://сайт.ru/cinema/";

Ниже вставим:

$proxy = "1.1.1.1.1:8080";

Далее найдём все:

loadPage($url);

И заменим их на:

loadPage($url,$proxy);

PS

 

Цвет - Шаг 1

Цвет - Шаг 2

Цвет - Шаг 3

Link to post
Share on other sites
  • Модератор

ТС, подскажите. А парсенная информация не кешируется? То есть срабатывает каждый раз при обращении к скрипту? Сам скрипт встроен в админке? Или вызывается посетителем?

Это очень важный момент. Создав кеширование данных и обращаясь к сайту-донору за информацией раз в сутки - вас никто банить не будет.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...