Sign in to follow this  
Followers 0
Tobol

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

16 posts in this topic

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

Share this post


Link to post
Share on other sites

 

 

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

Share this post


Link to post
Share on other sites

К сожалению, не в курсе как подключить его к сайту

Share this post


Link to post
Share on other sites

@Tobol,Не к сайту а к парсеру. Создайте тему по поиску того кто сможет (уверен люди отзовутся) либо вам путь на фриланс биржу  

Tobol likes this

Share this post


Link to post
Share on other sites

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

by_limon likes this

Share this post


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));
Tobol likes this

Share this post


Link to post
Share on other sites

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];

Share this post


Link to post
Share on other sites

@Tobol, я так понял у вас используется функция loadPage. В ней и нужно всё редактировать.

Share this post


Link to post
Share on other sites

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

 

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;
}

Share this post


Link to post
Share on other sites

Добавьте:

$proxy_address = "212.170.197.122:8080"; // IP замените

Ниже добавьте:

curl_setopt($ch, CURLOPT_PROXY, $proxy_address);

Share this post


Link to post
Share on other sites

Ткните, пожалуйста пальцем куда добавить. Если не сложно

Share this post


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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.