• PHP + cURL. Парсинг сайта с формой авторизации. Шаг 2

    Итак, нам удалось подключиться к сайту, получать от него COOKIE и отдавать их обратно вместе с другими заголовками, создавая видимость работы обычного браузера. Но как мы узнаем, прошла ли авторизация? Самым простым способом мне показалось найти в полученном коде код кнопки "Logout", которая присутствует на странице, если пользователь успешно авторизовался.

    function isAuth( $data ) {
      $flag = false;
      preg_match_all( ′/<button[^>]+?[^>]+>(.*?)</button>/i′, $data, $m );
      foreach( $m[ 1 ] as $a ) {
        if ( $a == ′Logout′ ) {
          $flag = true;
        }
      }
      return $flag;
    }
    if ( isAuth( $data ) ) {
      echo ′Авторизованы!′;
    } else {
      echo ′Не авторизованы!′;
    }



  • PHP + cURL. Парсинг сайта с формой авторизации. Шаг 1

    Бывают ситуации, когда надо получить контент множества страниц сайта-каталога. Но, как назло, каталог виден только тем пользователям, которые прошли процедуру авторизации. Как же быть?  Использовать PHP+cURL.

    Сначала смотрим код формы авторизации и ищем названия переменных, которые передаются скрипку авторизации, и url самого скрипта:

    <form id="loginForm" action="/SignonMain.aspx" method="post">
      <div>
        <div class="login-module-label float-left">LOGIN</div>
        <div class="float-left login-label-margintop">Username *</div>
        <div class="float-left"><input class="login-module-inputs" type="text" id="menuUserName" name="menuUserName"></div>
        <div class="float-left login-label-margintop">Password *</div>
        <div class="float-left"><input class="login-module-inputs" type="password" id="menuPassword" name="menuPassword"></div>
        <button type="button" class="button ladda-button npa-btn" id="bMainMenuLogin" data-style="expand-right">
          <span class="ladda-label">LOGIN</span>
        </button>
      </div>
    </form>

    Ага, имена переменных - "menuUserName" и "menuPassword", путь к скрипту - "/SignonMain.aspx". 

     function connect() {
      $ch = curl_init();
      curl_setopt( $ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0" );
      curl_setopt( $ch, CURLOPT_URL, $site_url . ′/SignonMain.aspx′ ); // отправляем на
      curl_setopt( $ch, CURLOPT_HEADER, 0 ); // пустые заголовки
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); // возвратить то что вернул сервер
      curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 ); // следовать за редиректами
      curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 30 );// таймаут
      curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );// просто отключаем проверку сертификата
      curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 ); // Не проверять Host SSL сертификата
      curl_setopt( $ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . ′/cookie.txt′ ); // сохранять куки в файл
      curl_setopt( $ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . ′/cookie.txt′ );
      curl_setopt( $ch, CURLOPT_POST, 1 ); // использовать данные в post
      curl_setopt( $ch, CURLOPT_POSTFIELDS, array(
        ′menuUserName′ => $username,
        ′menuPassword′ => $password
      ) );
      $data = curl_exec( $ch );
      return $ch;
    }



  • Редизайн сайта

    Наконец-то у меня дошли руки и до своего собственного сайта. А то, как говорится, "сапожник без сапог". Смешно, конечно, но так оно и было. Переделал всю структуру, сделал сайт в форме блога. Портфолио вынес отдельным разделом, а новостная лента теперь - непосредственно блог.

    Удачной идеей мне показалось сделать привязку каждой записи к одной или нескольким подкатегориям, чтобы в дальнейшем можно было фильтровать результаты отображения записей по нужной теме, например, "Программирование".

    Добавил также систему комментариев к записям. Пока простенькую, но на этапе тестирования сойдет.

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



  • Фриланс для программистов: подборка лучших сайтов

    Взято с сайта https://proglib.io - https://proglib.io/p/freelance/

    Многие ищут фриланс для программистов, но далеко не все знают, где искать. Мы составили список ресурсов, которые вас заинтересуют.

    Разберемся, что представляет из себя фриланс для программистов, и как быстро освоиться на приведенных ниже сайтах.

    1. FL

    Говорят, что фрилансеры здесь варятся в собственном соку. И это отчасти правда, ведь те, кто успел запрыгнуть в ТОП с самого начала работы сайта, прочно там засели. У вас, естественно, не будет столько заказов, сколько у «избранных», что, тем не менее, не означает отсутствие работы у «простых смертных».

    Для фрилансеров существует множество категорий, так что каждый найдет свою специализацию. Другое дело, что FL с давних пор платный. Если изначально лишь некоторые заказчики делали заказы доступными для исполнителей с PRO-аккаунтами, то теперь, чтобы оставить комментарий под любым заказом, нужно этот самый аккаунт иметь. А это ни много ни мало почти 1700 руб./мес. И ведь не факт, что отобьются…

    Куда комфортнее себя чувствуют работодатели: можно брать PRO, а можно и не брать. Ответов по проекту в любом случае будет море. Да и дешевле обходятся вебмастерам все эти PRO-плюшки.

    Несправедливо, да. Но привыкайте: золотое правило фриланса – заказчик всегда прав.

    Остальное - под катом )



  • PHP - как определить браузер пользователя?

    Нашел хорошее решение. Наряду с $_SERVER[ "USER_AGENT" ] можно использовать функцию get_browser().
    Чтобы она заработала, понадобится файл browscap.ini. Скачать его можно здесь - http://browscap.org/.

    PHP.ini:

    [browscap]
    browscap = "usr/local/php5/ext/browscap.ini" ; тут ваш путь

    Код PHP:

    echo $_SERVER[ "HTTP_USER_AGENT" ] . " ";
    $browser = get_browser( null, true );
    print_r( $browser );

    Вот, что получим в итоге:

    Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.22 Safari/537.36
    Array
    (
     [browser_name_regex] =>^mozilla/5.0 (.*windows nt 6.1.*) applewebkit/.* (khtml, like gecko) chrome/48..*safari/.*$
     [browser_name_pattern] => Mozilla/5.0 (*Windows NT 6.1*) AppleWebKit/* (KHTML, like Gecko) Chrome/48.*Safari/*
     [parent] => Chrome 48.0
     [platform] => Win7
     [comment] => Chrome 48.0
     [browser] => Chrome
     [browser_maker] => Google Inc
     [version] => 48.0
     [majorver] => 48
     [device_type] => Desktop
     [device_pointing_method] => mouse
     [minorver] => 0
     [ismobiledevice] =>
     [istablet] =>
     [crawler] =>
    )
    

    Вот и все. Удачи!



Загрузка...

Войти на сайт

Регистрация