Изменение аватара в Twitter через POST

Discussion in 'Социальные сети' started by Margin, 13 Nov 2011.

  1. Margin

    Margin New Member

    Joined:
    6 Apr 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Ребят, помогите разобраться, как сформировать POST запрос через CURL на php чтобы изменить аватар в Twitter
     
  2. Anifuck

    Anifuck Member

    Joined:
    12 Nov 2010
    Messages:
    78
    Likes Received:
    7
    Reputations:
    0
    разделом часом не ошибся?
     
  3. zoke

    zoke Member

    Joined:
    5 Sep 2010
    Messages:
    90
    Likes Received:
    9
    Reputations:
    5
    Ты перепутал раздел, multipartform-data нужно установить
     
  4. Margin

    Margin New Member

    Joined:
    6 Apr 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Ну как будут выглядеть заголовки и сам post запрос ? можешь пример привести?
     
  5. zoke

    zoke Member

    Joined:
    5 Sep 2010
    Messages:
    90
    Likes Received:
    9
    Reputations:
    5
    Я на php не пишу, в гугле набери "php curl multipartform-data"
     
  6. stasik

    stasik Member

    Joined:
    6 Aug 2009
    Messages:
    22
    Likes Received:
    10
    Reputations:
    6
    вот выдрал пример отправки фото из своего скрипта, это для контакта,
    PHP:
    $photo=array('photo'=>'@'.'dir/ava.jpg','al'=>'1','act'=>'profile_photo','mid'=>$id,'photo_hash'=>$photo_hash,'hash'=>$hash,'rhash'=>$rhash);
    curl_setopt($chCURLOPT_POSTFIELDS$photo);
    то есть чтобы отправить multipartform-data, нужно
    - сниффером перехватить пакет, там будет написанно что это пост запрос в формате multipartform-data
    -список полей в запросе копируеш, одно из полей это содержимое файла с картинкой
    - в пхп создаёш массив, где названия полей, это названия параметров из пост запроса,
    - этот массив используеш при отправке пост запроса
     
  7. stasik

    stasik Member

    Joined:
    6 Aug 2009
    Messages:
    22
    Likes Received:
    10
    Reputations:
    6
    а тему лучше в соответствующий раздел перенести
     
  8. Margin

    Margin New Member

    Joined:
    6 Apr 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Отправляются вот такие заголовки...
    Code:
    POST /settings/profile HTTP/1.1
    Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
    Referer: http://twitter.com/settings/profile
    Accept-Language: ru
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MRSPUTNIK 2, 4, 0, 270; BTRS122833; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; AskTbSPC2/5.13.1.18107)
    Content-Type: multipart/form-data; boundary=---------------------------7db29f2d80dd2
    Accept-Encoding: gzip, deflate
    Host: twitter.com
    Content-Length: 8881
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: tz_offset_sec=10800; guest_id=v1%3A131215956554041548; __utma=43838368.395718010.1309529431.1320762942.1321108173.13; __utmz=43838368.1309529431.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); twll=l%3D1320759436; __utmv=43838368.lang%3A%20ru; k=10.35.50.118.1320759339162482; js=1; auth_token=***; lang=ru; twid=***; _twitter_sess=***; original_referer=4bfz%2B%2BmebEkRkMWFCXm%2FCfrMiycY0SOh8XvRpejPJkZuFeuDp4CCwg%3D%3D; __utmb=43838368.4.10.1321108173; __utmc=43838368
    
    -----------------------------7db29f2d80dd2
    Content-Disposition: form-data; name="_method"
    
    put
    -----------------------------7db29f2d80dd2
    Content-Disposition: form-data; name="authenticity_token"
    
    1f6ae940281058be39aba53aef768a1811dfbf38
    -----------------------------7db29f2d80dd2
    Content-Disposition: form-data; name="profile_image[uploaded_data]"; filename="Twitter_squareLogo.png"
    Content-Type: image/x-png
    
    ‰PNG
    
    Как его сформировать так я и не могу понять, например что такое "-----------------------------7db29f2d80dd2"
    "‰PNG
    " и т.п
     
  9. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    Открываешь гугл, пишешь в строке поиска "curl multipart file upload" читаешь.
     
    _________________________
  10. Margin

    Margin New Member

    Joined:
    6 Apr 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Не пойму в чем дело, картинка не меняется, ответа от сервера вообще не приходит ни какого...
    PHP:
    $url='http://twitter.com/settings/profile';
    $postfields = array(
    '_method' => 'put',
    'authenticity_token' => $authenticity_token,
    'profile_image[uploaded_data]' => '@1.png'

    ); 

    $cookie='twid='.$twid.'; auth_token='.$auth_token;
    $content=conn($url,$postfields,$proxy,$cookie);
    echo 
    $content ;
    Функция conn отправляет данне CURL
    Заголовки отправляю такие:
    PHP:
        $head    = array();
        
    $head[] = "Referer: http://twitter.com";
        
    $head[] = "Accept-Language: ru";
        
    $head[] = "Accept-Encoding: gzip, deflate";
        
    $head[] = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)";
        
    $head[] = "Connection: Keep-Alive";
        
    $head[] = "Cache-Control: no-cache";
     
    #10 Margin, 14 Nov 2011
    Last edited: 14 Nov 2011
  11. stasik

    stasik Member

    Joined:
    6 Aug 2009
    Messages:
    22
    Likes Received:
    10
    Reputations:
    6
    сейчас глянул твой твиттер
    - во первых у тебя только 3 поля в пост запросе, а там в несколько раз больше полей, попробуй сниффер Http Analyzer
    -во вторых Referer не правильный, если аватар из профиля изменяеш то там http://twitter.com/settings/profile
     
  12. Margin

    Margin New Member

    Joined:
    6 Apr 2009
    Messages:
    39
    Likes Received:
    0
    Reputations:
    0
    Всем спасибо! Наконец-то я справился...
    Вот заголовки:
    PHP:
    $head    = array();
        
    $head[] = "Referer: twitter.com";
        
    $head[] = "Referer: http://twitter.com/settings/profile";
        
    $head[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
        
    $head[] = "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3";
        
    $head[] = "Accept-Encoding: gzip, deflate";
        
    $head[] = "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7";
        
    $head[] = "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)";
            
    $head[] = "Content-Type: multipart/form-data";
        
    $head[] = "Connection: Keep-Alive";
        
    $head[] = "Cache-Control: no-cache";
    Вот пост запрос:
    PHP:
    $postfields = array(
    '_method' => 'put',
    'authenticity_token' => $authenticity_token,
    'profile_image[uploaded_data]' => '@C:\AppServ\www\twitter\1.jpg',
    'user[name]'=>$login,
    'user[location]'=>'',
    'user[url]'=>'http://',
    'user[description]'=>'dsfsdgf',
    'commit'=> 'Save'
    ); 
    Если хотите отправлять данные на русском языке тогда вот так например:
    PHP:
    'user[description]'=> iconv("windows-1251""utf-8""Я Русский!!!")
     
    #12 Margin, 16 Nov 2011
    Last edited: 17 Nov 2011