[C#] Twitter отправка твита

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by immortalist, 7 Mar 2012.

  1. immortalist

    immortalist Member

    Joined:
    16 Jan 2010
    Messages:
    99
    Likes Received:
    64
    Reputations:
    37
    День добрый всем :)
    Пытаюсь отправить твит - не получается. Хотя авторизация проходит, все отлично. Запросы 1в1 как в браузере.

    Авторизация:
    Code:
    var req = VkRequest.Request("https://mobile.twitter.com/session/new", cookies: cooc, proxy: p);
                    string tkn = Regex.Match(req.ContentUTF8, "<input name=\"authenticity_token\" type=\"hidden\" value=\"(.*?)\" />").Groups[1].Value;
                    
                    req = VkRequest.Request("https://mobile.twitter.com/session",
                        String.Format("authenticity_token={0}&username={1}&password={2}", tkn, acc.Split(':')[0], acc.Split(':')[1]), cookies: cooc,
                        additionalHeaders: new HTTPHeaderItem("Referer", "https://twitter.com/"), FollowRedirects: true, proxy: p);
    
                    if (req.ContentUTF8.Contains("data-csrf-token"))
                        log("Авторизовались аккаунтом " + acc);
                    else
                    {
                        banned = true;
                        log("Акк " + acc + " не смог вспомнить пароль :)) Ему пришла *****");
                    }
    Отправка твита:
    Code:
    req = VkRequest.Request("https://mobile.twitter.com/",
                            String.Format("authenticity_token={0}&tweet%5Btext%5D={1}&tweet%5Bin_reply_to_status_id%5D=&tweet%5Blat%5D=&tweet%5Blong%5D=&tweet%5Bplace_id%5D=&tweet%5Bdisplay_coordinates%5D=",
                            tkn, Regex.Replace(HttpUtility.UrlEncode(tweet), @"(%)(..)", m => string.Format(@"%{0}", m.Groups[2].Value.ToUpper()), RegexOptions.IgnoreCase)),
                            cookies: cooc, additionalHeaders: new HTTPHeaderItem[] {
                            new HTTPHeaderItem("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"),
                            new HTTPHeaderItem("Referer", "https://mobile.twitter.com/"),
                            new HTTPHeaderItem("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"),
                            new HTTPHeaderItem("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"),
                            new HTTPHeaderItem("Connection", "keep-alive") }, proxy: p);
    Что я делаю не так?
    Ах да, использую либу от кайроса kairos-blog.ru
     
  2. zORG

    zORG New Member

    Joined:
    5 Jun 2010
    Messages:
    44
    Likes Received:
    2
    Reputations:
    0
    Для обычных запросов уже надо использовать какие-то левые, сомнительного качества либы?
    А вообще есть c# либа от самого твиттера даже.
    Лучше бы её юзал, либо еще какую-то для отправки твитов, каких в инете довольно много уже готовых.
     
  3. immortalist

    immortalist Member

    Joined:
    16 Jan 2010
    Messages:
    99
    Likes Received:
    64
    Reputations:
    37
    1. Качество либы сомнения не вызывает, да и разговор сейчас не об этом. Использую ее т.к. в ней присутствует поддержка соксов и хттпс.
    2. Все либы юзают oauth а мне необходима обычная авторизация и работа через mobile.twitter.com
     
  4. bafoed

    bafoed Member

    Joined:
    14 Jul 2009
    Messages:
    88
    Likes Received:
    12
    Reputations:
    10
    Code:
    authenticity_token={0}&tweet[text]={1}&tweet[in_reply_to_status_id]=&tweet[lat]=&tweet[long]=&tweet[place_id]=&tweet[display_coordinates]=
    попробуй так, URLEncode забыл убрать в POST.
     
  5. zoke

    zoke Member

    Joined:
    5 Sep 2010
    Messages:
    90
    Likes Received:
    9
    Reputations:
    5
    Code:
    private bool shapetweet(String authenticity_token, String useragent)
            {
                String shapetweet = request("http://mobile.twitter.com/", "authenticity_token=" + authenticity_token + "" + "&tweet[display_coordinates]=&tweet[in_reply_to_status_id]=&tweet[lat]=&tweet[long]=&tweet[place_id]=&tweet[text]=" + gettweet(), method: "POST",useragent: useragent);
                if (checkpage(shapetweet))
                    {
                        _good++;
                        AddToLog(label4, _good);
                        return true;
                    }
    
                return false;
            } 


    У меня так и всё работает.