Php пост в odnoklassniki

tltzzz

Писатель
Регистрация
25 Июл 2011
Сообщения
8
Реакции
0
Кто подскажет как автоматически сделать пост на odnoklassniki.ru

может кто видел библиотеку такую или знает где её купить ?
 
смотрел уже. Это через приложение, а его фиг создашь у них.
 
а что мешает отправить сообщение вручную, подсмотреть куки и прочие моменты в сниффере и на php через curl сделать то же самое ?
 
Юзай curl и API одноклассников
 
а что мешает отправить сообщение вручную, подсмотреть куки и прочие моменты в сниффере и на php через curl сделать то же самое ?

А как Вы id сессии подставите, что бы проверку проити?
 
shaen
чем запросы браузера отличаются от запросов на curl ? - при желании ничем
если что-то можно делать через браузер, то же самое можно делать и через curl - надо лишь проснифать протокол общения между браузером и сайтом.

любой id, как правило, можно получить съэмулировав вход(логин/пасс) пользователя в систему.
 
id можно получить съэмулировав логин пользователя в одноклассники.
PHP:
<?php
 
class Odnoklassniki_API {
 
    public function __construct($email, $passwd)
    {
        $this->email = $email;
        $this->passwd = $passwd; 
 
        if (isset($this->email) && isset($this->passwd))
        {
            // autenticate the user
            if ( ! $this->authenticate())
            {
                throw new Exception('Failed to authenticate, please check your email and password.');
            }
        }     
    }
 
    private function authenticate()
    { 
        $postdata = array(
            'st.email'        => $this->email,
            'st.password'    => $this->passwd,
            '...'            => '...'
        );
     
        $response = $this->post_to("http://www.odnoklassniki.ru", $postdata);
 
        //process the response;
        if ($response)
        {
            // Проверка ответа  authenticate?
 
            var_dump($response);
 
            return true;
 
        }
 
        return false; 
    }
 
    private function post_to($url, $data=array(), $header=array())
    {
     
        //check that the url is provided
        if ( ! isset($url))
        {
            return FALSE;
        }
     
        //send the data by curl
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
     
        if (count($data) > 0)
        {
            //POST METHOD
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }
        else
        {
            $header[] = array("application/x-www-form-urlencoded");
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
     
        $response = curl_exec($ch);
        $info = curl_getinfo($ch);
     
        curl_close($ch);
     
        if($info['http_code'] == 200)
        {
            return $response;
        }
        elseif ($info['http_code'] == 400)
        {
            throw new Exception('Bad request - '.$response);
        }
        elseif ($info['http_code'] == 401)
        {
            throw new Exception('Permission Denied - '.$response);
        }
        else
        {
            return FALSE;
        }
     
    }

Вот вам простой класс для авторизации через curl у меня съэмулировать не получилось, мне кажется без API не обойтись
 
Вот вам простой класс для авторизации через curl у меня съэмулировать не получилось, мне кажется без API не обойтись
вы проснифали протокол общения между браузером и однокласниками ? видно что нет.
если же его проснифать и определить необходимые пункты, то этот протокол можно съэмулировать курлом.

для задач ТС согласен, что проще юзать API, чем собирать свой "велосипед". но он написал что API он юзать [не "хочет"]/[не может]
 
PHP:
class Odnoklassniki_API {
 
    public function __construct($email, $passwd)
    {
        $this->email = $email;
        $this->passwd = $passwd;
 
        $this->user_agent = $_SERVER['HTTP_USER_AGENT'];
 
        if (isset($this->email) && isset($this->passwd))
        {
            // autenticate the user
            if ( ! $this->authenticate())
            {
                throw new Exception('Failed to authenticate, please check your email and password.');
            }
        } 
    }
 
    private function authenticate()
    {
        $postdata = array(
              'st.redirect'      => '',
              'st.posted'      => 'set',
              'st.email'          => $this->email,
              'st.password'      => $this->passwd,
              'st.screenSize'  => '',
              'st.browserSize' => '',
            'st.flashVer'      => ''
          );
 
        $response = $this->post_to("http://www.odnoklassniki.ru/dk?cmd=AnonymLogin&amp;st.cmd=anonymLogin&amp;tkn=2039", $postdata);
 
        //process the response;
        if ($response)
        {
            // Проверка ответа  authenticate?
 
            var_dump($response);
 
            return true;
 
        }
 
        return false;
    }
 
    private function post_to($url, $data=array())
    {
 
        //check that the url is provided
        if ( ! isset($url))
        {
            return false;
        }
 
        //send the data by curl
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_USERAGENT, $this->user_agent);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt');
        curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt');
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 10);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);     
 
        if (count($data) > 0)
        {
            //POST METHOD
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        }
 
        $response = curl_exec($ch);
 
        curl_close($ch);
 
        return $response
    }

Да вы оказались правы авторизоваться можно и через curl, но через api еще проще, при необходимости можно допилить эту заготовку
 
Назад
Сверху