Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Почему перестал работать CURL?


Автор: Vetlblya 23.4.2013, 12:04
Привет всем!
Написал старый заказчик и я достал из закромов парсер госзакупок, но, к великому разочарованию, обнаружил, что парсер, который работал 5 месяцев назад перестал получать страницы. 
Проблема в том, что вот этот кусок кода должен получить страницу с госзаккупок
Код

  $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://www.zakupki.gov.ru/pgz/public/action/search/quick/run?currentSearchString=0148200000513000019');
    curl_setopt($ch, CURLOPT_TIMEOUT, 5000);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    while (!isset($res[0])){ 
        $st = curl_exec($ch); 
        preg_match('/<\/html>/', $st, $res);      
    }  
    curl_close($ch);
    
    echo $st;  


а приходит вот такой код:


Код

<html>
<head>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache" charset=UTF-8">
    <title> Страница не найдена </title>

    <style type="text/css">
        body {
            background-color: #D5D5D5;
        }

        td {
            color: #666666;
            font-family: Arial, Helvetica, sans-serif;
            font-size: 11px;
        }

        button {
            border: 1px solid #D9D9D9;
            font-family: tahoma;
            font-size: 11px;
            font-size-adjust: none;
            font-stretch: normal;
            font-style: normal;
            font-variant: normal;
            font-weight: normal;
            line-height: normal;
            margin: 0;
            padding: 3px;
        }
    </style>
</head>

<body>

<table width="100%" height="100%" cellpadding="0" cellspacing="0">
    <tr>
        <td width="100%" valign="middle" align="center">

            <table cellpadding="0" cellspacing="0" border="0" style="background-color:white;">
                <tr>
                    <td>
                        <img src="/header_left.gif" alt="" style="padding:0;margin:0;border:0">
                    </td>
                </tr>
                <tr><td style="padding:20px;">
                    <table style="border:0;" width="100%">
                        <tr>
                            <td style="font-weight:bold;font-size:11px;" align="center" width="100%">
                                Запрашиваемая страница не существует.
                            </td>
                        </tr>

                        <tr>
                            <td width="100%" align="center">
                                <button onclick="location.href='http://zakupki.gov.ru/';">Перейти на главную страницу</button>
                            </td>
                        </tr>
                    </table>
                </td></tr>
            </table>
        </td>
    </tr>
</table>
</body>

</html>


Как я понимаю, сайт госзакупок приобрел какую-то защиту от парсинга. Как можно получить страницу с госзакупок сейчас?

Автор: Sanchezzz 23.4.2013, 12:39
Осталось проверить уровень защиты.

Включить в работу CURL куки
Подставить заголовок браузера например IE8
И посмотреть если результат тот же то значит проверить на другой машине скрипт например с локалке. Если заработало значит сервак в бан листе=). Поздравляю вас и служащих гос закупок, в движение прогресса 

Автор: Vetlblya 23.4.2013, 13:21
Цитата(Sanchezzz @ 23.4.2013,  12:39)
Осталось проверить уровень защиты.

Включить в работу CURL куки
Подставить заголовок браузера например IE8
И посмотреть если результат тот же то значит проверить на другой машине скрипт например с локалке. Если заработало значит сервак в бан листе=). Поздравляю вас и служащих гос закупок, в движение прогресса

куки пробовал, не прокатило( сейчас попробую с заголовками помудрить

Добавлено через 11 минут и 4 секунды
Цитата(Sanchezzz @ 23.4.2013,  12:39)
Осталось проверить уровень защиты.

Включить в работу CURL куки
Подставить заголовок браузера например IE8
И посмотреть если результат тот же то значит проверить на другой машине скрипт например с локалке. Если заработало значит сервак в бан листе=). Поздравляю вас и служащих гос закупок, в движение прогресса

Спасибо тебе огромнейшее! заработало все после подстановки заголовка! Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)