Здарова поцаны.

Короче, я заморочался по политоте и в прошлый митинг попытался написать сервис, который будет отстреливать ботов, срущих твиттер. И нихуя у меня не получилось — твиттер срать ебал мои спам-репорты, а нашисты мне еще и сервак опрокинули и до сих пор его зачем-то ддосят.

Но я чувак упрямый, решил зарулить с другого конца. Идея в том, чтобы замутить полностью client-side аппу, которая будет присасываться к Twitter Stream API и получать оттуда твиты в реалтайме. А там уже применять на них какие-то хитрые алгоритмы и показывать релевантное, а нерелевантное (спам-ботов) блочить.

Короче, я нашел флешевую имплементацию клиента, но она последний раз обновлялась в 2010 году и в ней захардкодено коннектиться по HTTP. А твиттер с тех пор успел решить, что HTTP вообще неок и отдается теперь исключительно по HTTPS.

Вобщем вот сырец.

Вопрос к умельцам. Если там на 33 строке тупо поменять http на https, оно будет работать? И если да, то огромная просьба выслать исправленный скомпиленный swf.

Tagged with →  

28 Responses to Сервис, который будет отстреливать ботов в твиттер

  1. EibZZ:

    Допустим, у нас заработал https, что дальше? Я так понял, что ты не очень в ActionScript-е хорошо разбираешься, чтобы сделать client-side приложение.

  2. Zwref:

    А дальше все. ActionScript кусок нужен только для соединения со Streaming API. Остальное — javascript, в котором я вполне заебись разбираюсь.

  3. Zwref:

    И вообще, там по ссылке готовый почти-работающий пример есть. После исправления http на https он должен стать совсем работающим.

  4. EibZZ:

    держи онлайновый компилятор http://wonderfl.net

  5. DArsuper:

    Стоит глянуть на https://dev.twitter.com/docs/twitter-lib

    А это так, я от нечего делать написал детектилку флагов на аватарках
    http://userad.github.com/Examples/canvas

  6. DArsuper:

    вот еще библиотека, я работоспособность пока не проверял https://github.com/r/twstreamer

  7. 0duPhone:

    Может лучше взять это и сделать в браузере сразу?
    http://linuxoids.org/root/11

  8. DArsuper:

    лучше сразу буркмаклет. Могу помочь

  9. Zwref:

    лол. Я как раз про эту библиотеку и написал.

  10. Zwref:

    Эта идея — говно. Браузерный плагин установит три с половиной гика. А веб-страничка, куда тупо заходишь и все работает — это ок.

  11. DArsuper:

    Я тут поэкспериментировал и понял, что дешевле (и надежнее) сделать сервер прокси на базе какого-нить faye (выдержит столько коннектов, сколько надо) и не городить браузерный клиент ибо:
    1. stream api заткнется на одном клиенте (либо это только у меня происходило)
    2. Можно декомпильнув вытащить авторизацию и напакостить (превысив хотя-бы лимит обращений)
    3. Никто свой пароль от твиттера туда сувать не будет.

  12. Zwref:

    Я в прошлый раз тоже поэксперементировал. Сервер до сих пор лежит под мощным ддосом. Поэтому все что угодно завязанное на сервер-сайд — не катит.

  13. Zwref:

    1. Один клиент — один коннект в стрим апи. Больше то и не надо.
    2. Как ты себе это представляешь?
    3. С этим да, самая большая проблема.

  14. DArsuper:

    а чем стримил? Можно подробности? Как ддосят?

  15. Zwref:

    Я ничем не стримил, я сделал сайт, который собирал акцесс токены и фигачил в апи report_spam. Я про это в самом посте написал.

    Ддосили тупо на 80 порт всяким говном. В первый же день линода вырубила серверу сеть и до сих пор не включила обратно, говорит ддос продолжается. Каждый день мне шлет тикеты и просит рассказать, что вообще происходит и откуда такая хуйня.

    Я к тому, что как только ты сделаешь какой-то антиботовый сервис с какими-то сервер-сайд штуками, тебя тут же выебут ддосом во все щели. Поэтому я и подумал сделать тупую статическую страничку с джаваскриптом, которая будет все сама делать, без сервера. Ее накрайняк можно вообще из рук в руки передавать.

  16. DArsuper:

    у меня есть идейка одна… поскольку трек по твиттеру это запрос на один из серверов, то можно дернуть json оттуда
    например поиск по #новости делает запросы вида

    https://twitter.com/phoenix_search.phoen

    если добавить туда параметр callback=asd, то получим абсолютно человечий JSONp 🙂
    Остается только при заходе проверить залогинен-ли пользователь и если нет, то открыть ему попап с авторизацией твиттера.

  17. DArsuper:

    а можно даже без авторизации

  18. Zwref:

    10 числа двое моих друзей-программеров попытались реализовать такую штуку. Один на пхп, другой на питоне, кажется. И у них все получилось, но только фигово. Суть в том, что после определенного числа запросов phoenix_search начинает слать нахуй. Ну тоесть там троттл стоит какой-то. Поэтому фигачить туда постоянно — не вариант. Пусть даже и джаваскриптом. Короче, никакого реалтайма не получится.

    Выходит что единственный вариант — Streaming API через блядскую флешевую библиотечку, в которой по-прежнему надо исправить http на https.

  19. DArsuper:

    phoenix имеет троттл как и вся эта фигня в 1000 запросов в час вроде. Есть еще search.twitter.com
    вот я скидал примерчик https://s3-eu-west-1.amazonaws.com/usera

  20. Zwref:

    Ну, это теоретически работоспособное решение, у которого кача недостатков и два жирных плюса: оно уже работает и оно не требует воода логина с паролем.
    Тем не менее во время митинга по ключевым хештегам ебической силы был поток. Плюс, боты срали пачками и резко. В доке написанно вот что: The Rate Limits for the Search API are not the same as for the REST API. When using the Search API you are not restricted by a certain number of API requests per hour, but instead by the complexity and frequency.

    As requests to the Search API are anonymous, the rate limit is measured against the requesting client IP.

    Что наводит на мысли, что вся эта бодяга сломается на самом интересном месте. И предугадать этот момент практически никак нельзя. Плюс, никто не гарантирует, твой сосед по локалке Вася, у которого такой же внешний ip как у тебя, не делает то же самое — а это только ускорит пиздец.

  21. DArsuper:

    ну да, надо посмотреть количество твитов которые кидались в то время (у меня есть некоторые данные по ним) и посчитать сколько запросов можно спокойно вкачать. Лично я думаю, что если брать раз в 30 секунд по 100 твитов, то будет норм даже если 2-3 васи сидят за 1м IP.

    Исходник js могу дать если необходимо, он на coffee

  22. Zwref:

    Я сам такой исходник за 10 минут нахуярю 🙂

    Там по количеству было весьма непредсказуемо. В первые 30 секунд можно было высосать 20 твитов, а в следующие набигарили боты и к нормальным 20-30 твитам насирали 150 спамовых. Поэтому не угадаешь нифига 🙂

  23. Zwref:

    опять же, согласись что конечному «читателю» приятнее, когда поток прет равномерно, а не рывками раз в 30 секунд.

  24. DArsuper:

    ну это да, но опять-же надо посмотреть как родной поток отдает твиты… точнее по какой задержке

  25. Zwref:

    almost realtime. Это апи юзают нативные клиенты. И там все вплне плавно и задержка не более 1 секунды.

  26. DArsuper:

    я тут подумал, если сделать адаптивную задержку, то можно уменьшить время между запросами секунд до 5.

  27. Zwref:

    Я флешку скомпилил и наступил на другие грабли. stream.twitter.com вообще не отдает crossdomain.xml, а betastream.twitter.com отдает, но кривой, malformed, и с неправильным Content-Type.

    Ну что за криворукие мудаки в этом твиттере сидят, а?

  28. DArsuper:

    в копилку ненависти можно кинуть phoenix_search и его «jsonp» он коллбек 2 раза сует и ломает все

Добавить комментарий