linux @ 11 Август 2008
В предыдущих статья я рассматривал, как увеличивать рейтинг на торрент трекерах, с помощь отсылки GET запросов получаемых с помощью и , в этом посте я хочу рассказать, как можно модифицировать код rtorrent таким образом, чтобы он отсылал другие показатели на сервер:
- количество скачанного
- количество отданного
- сколько осталось скачивать
- представлятся другим торрент клиентом(если вдруг rtorrent неразрешен на трекере)
Также мы рассмотрим различные способы улучшения работы rtorrent. В общем, на мой взгляд это одна из наиболее полезных статей в серии.
Итак, приступим:
Сперва наперво нам необходимо скачать исходники rtorrent и libtorrent:
Далее разархивируем их(можно взять последнюю development версию из svn, как это сделать - описано):
Итак, приступим к модификации кода.
Пункт первый - увеличиваем отдачу:
Находим строчку: s << "&uploaded=" << up
Изменяем значение up, на (up*2), это увеличит отдачу в два раза, строка итоговая будет выглядеть так: s << "&uploaded=" << (up*2)
Пункт второй - уменьшаем количество скачиваемого:
Ищем строку: << "&downloaded=" << down
Меняем соответственно down на (down*0.5).
Пункт третий - уменьшаем количество оставшегося:
Ищем строку: << "&left=" << left;
Заменяем left на (left*0.5), нужно менять на то же значение, что и down, поскольку некоторые трекеры смотрят на параметры отдаваемых торрент-клиентом(лучше вообще эти параметры не менять).
Пункт четвёртый - надеваем чужую маску:
Не секрет, что помимо указанных выше данных торрент-клиент сообщает трекеру своё название, и код этого названия с потолка не берётся, давайте ознакомимся со списком примерных User Agent'ов:
Расшифровывается очень просто -UAVERS-, где UA сокращённый User Agent, а VERS - V.E.R.S - версия torrent-клиента без точек.
На многих трекерах запрещены User Agent, использующие возможность скачивания без возможности отдачи(например на torrents.ru таким образом закрыта Opera), вот список UA, которые, с высокой долей вероятности ни на одном трекере закрыты не будут:
Более полный список можно посмотреть .
Итак, чтобы сменить открываем файл:
vim libtorrent-0.12.2/configure
И меняем там
Например на:
Также, чтобы не вычислили подмену заменяем в файле:
vim rtorrent-0.8.2/configure
На:
В принципе это основные шпионские штучки, в общем - главное не попадитесь ;)
Теперь займёмся модификацией исходного кода в сторону улучшения работы rtorrent.
Открываем:
vim libtorrent-0.12.2/src/protocol/peer_connection_leech.cc
И заменяем:
Это позволяет откидывать пиров, которые не участвуют никак в раздаче намного быстрее.
В принципе всё, что я хотел рассказать о работе с rtorrent, завтра-послезавтра я коротко расскажу как можно изменить отдачу в Deluge.
- количество скачанного
- количество отданного
- сколько осталось скачивать
- представлятся другим торрент клиентом(если вдруг rtorrent неразрешен на трекере)
Также мы рассмотрим различные способы улучшения работы rtorrent. В общем, на мой взгляд это одна из наиболее полезных статей в серии.
Итак, приступим:
Сперва наперво нам необходимо скачать исходники rtorrent и libtorrent:
wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.8.2.tar.gz
wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.12.2.tar.gzДалее разархивируем их(можно взять последнюю development версию из svn, как это сделать - описано):
tar zxvf rtorrent-0.8.2.tar.gz
tar zxvf libtorrent-0.12.2.tar.gzИтак, приступим к модификации кода.
Пункт первый - увеличиваем отдачу:
vim libtorrent-0.12.2/src/tracker/tracker_http.ccНаходим строчку: s << "&uploaded=" << up
Изменяем значение up, на (up*2), это увеличит отдачу в два раза, строка итоговая будет выглядеть так: s << "&uploaded=" << (up*2)
Пункт второй - уменьшаем количество скачиваемого:
Ищем строку: << "&downloaded=" << down
Меняем соответственно down на (down*0.5).
Пункт третий - уменьшаем количество оставшегося:
Ищем строку: << "&left=" << left;
Заменяем left на (left*0.5), нужно менять на то же значение, что и down, поскольку некоторые трекеры смотрят на параметры отдаваемых торрент-клиентом(лучше вообще эти параметры не менять).
Пункт четвёртый - надеваем чужую маску:
Не секрет, что помимо указанных выше данных торрент-клиент сообщает трекеру своё название, и код этого названия с потолка не берётся, давайте ознакомимся со списком примерных User Agent'ов:
peer_id (PEER_NAME) User-Agent String: USER_AGENT:
-AZ3022- Azureus 3.0.2.2 Azureus/3022
-BC0091- BitComet 0.0.9.1 BitComet/0091
-BF1355- BitFlu 1.3.5.5 BitFlu/1355
-UT1610- uTorrent 1.6.1.0 uTorrent/1610Расшифровывается очень просто -UAVERS-, где UA сокращённый User Agent, а VERS - V.E.R.S - версия torrent-клиента без точек.
На многих трекерах запрещены User Agent, использующие возможность скачивания без возможности отдачи(например на torrents.ru таким образом закрыта Opera), вот список UA, которые, с высокой долей вероятности ни на одном трекере закрыты не будут:
'AG' - Ares
'A~' - Ares
'AR' - Arctic
'AV' - Avicora
'AX' - BitPump
'AZ' - Azureus
'BB' - BitBuddy
'BC' - BitComet
'BF' - Bitflu
'BG' - BTG (uses Rasterbar libtorrent)
'BR' - BitRocket
'BS' - BTSlave
'BX' - ~Bittorrent X
'CD' - Enhanced CTorrent
'CT' - CTorrent
'DE' - DelugeTorrent
'DP' - Propagate Data Client
'EB' - EBit
'ES' - electric sheep
'FT' - FoxTorrent
'GS' - GSTorrent
'HL' - Halite
'HN' - Hydranode
'KT' - KTorrent
'LH' - LH-ABC
'LP' - Lphant
'LT' - libtorrent
'lt' - libTorrent (rtorrent)
'LW' - LimeWire
'MO' - MonoTorrent
'MP' - MooPolice
'MR' - Miro
'MT' - MoonlightTorrent
'PD' - Pando
'qB' - qBittorrent
'QD' - QQDownload
'QT' - Qt 4 Torrent example
'RT' - Retriever
'S~' - Shareaza alpha/beta
'SB' - ~Swiftbit
'SS' - SwarmScope
'ST' - SymTorrent
'st' - sharktorrent
'SZ' - Shareaza
'TN' - TorrentDotNET
'TR' - Transmission
'TS' - Torrentstorm
'TT' - TuoTu
'UL' - uLeecher!
'UT' - µTorrent
'WT' - BitLet
'WY' - FireTorrent
'XL' - Xunlei
'XT' - XanTorrent
'XX' - Xtorrent
'ZT' - ZipTorrent Более полный список можно посмотреть .
Итак, чтобы сменить открываем файл:
vim libtorrent-0.12.2/configure
И меняем там
#define PEER_NAME "-lt0B01-"Например на:
#define PEER_NAME "-UT1720-"Также, чтобы не вычислили подмену заменяем в файле:
vim rtorrent-0.8.2/configure
#define USER_AGENT std::string(PACKAGE "/" VERSION "/") + torrent::version()На:
#define USER_AGENT "uTorrent/1720"В принципе это основные шпионские штучки, в общем - главное не попадитесь ;)
Теперь займёмся модификацией исходного кода в сторону улучшения работы rtorrent.
Открываем:
vim libtorrent-0.12.2/src/protocol/peer_connection_leech.cc
И заменяем:
if (cachedTime - m_timeLastRead > rak::timer::from_seconds(240))
if (cachedTime - m_timeLastRead > rak::timer::from_seconds(20))Это позволяет откидывать пиров, которые не участвуют никак в раздаче намного быстрее.
В принципе всё, что я хотел рассказать о работе с rtorrent, завтра-послезавтра я коротко расскажу как можно изменить отдачу в Deluge.

Август 12th, 2008 at 02:02
ой, а для азуреуса третьей версии будут варианты? :) а то у меня с аплодом туговато... держу ратио в норме, но приходится себе во многом отказывать :(
Август 12th, 2008 at 06:01
угу. помогите ненасытным потребителям убить битторент своим потребительским подходом.
Август 12th, 2008 at 06:17
Это так, изыскания на тему. Я привожу пример opensource программ, я ровно также видел и uTorrent(у которого, кстати исходники закрыты) пробитый и специальные программы которые работают навроде прокси. И что то я не вижу гибели p2p-torrent сетей. Те у кого канал широкий вообще на эту тему не заморачиваются, основная масса ни про что такое не знает, а небольшая часть которая будет всё это выполнять, ничего особенного на общем фоне не сделает.
Azureus'ом не пользуюсь, уж больно много ресурсов он ест. И желания раскапывать сорцы к нему не очень большое. За n-ую сумму могу конечно покопаться, но мне оно лично не надо...
Август 12th, 2008 at 16:53
ай молодца, ай правильную тему описал. очень признателен. как руки дойдут, так обязаточно копипаст в свой блог (авторство соблюдем).
Август 13th, 2008 at 19:34
Я себе приблуду писал в виде http proxy для коммуникации с трекером. В сорцы тогда лезть не надо и многие клиенты можно приучить :)
Август 13th, 2008 at 20:39
Если будет время, то расскажу как можно будет написать такое, это в принципе несложно. Можно и локалхостовский прокси использовать, и на сервере собрать... Да и сквид соответствующим образом настроить.
Август 16th, 2008 at 19:20
Добавь опцию подписки на комментарии по e-mail лучше ;)
Август 17th, 2008 at 04:28
@bobirk:
Сделал :)
Сентябрь 12th, 2008 at 03:58
Плохо так поступать. Широкий - не широкий канал, а раздать даже в два раза больше, чем скачал, не проблема. По крайней мере, со своими 128 кбитами (раньше 64) никогда не возникало проблем с рейтингом.
Сентябрь 12th, 2008 at 11:41
Плохо - не плохо, вопрос технический.
У меня тоже не возникало.
Сентябрь 15th, 2008 at 06:31
Раз так - согласен.
В принципе, весь open source рассчитан на порядочность )
Сентябрь 19th, 2008 at 07:59
Не знаю почему у тебя заработало, у меня не компилировалось. Ошибку выдавало.
#define USER_AGENT std::string(PACKAGE "/" VERSION "/") + torrent::version()
На:
#define USER_AGENT "uTorrent/1720"
Я заменил на
#define USER_AGENT std::string( "uTorrent/1720")
Что скажешь?
Сентябрь 19th, 2008 at 12:48
А на каком этапе то вылетает?
Сентябрь 19th, 2008 at 13:49
На этапе make. Пишет Error после экрана листинга. Что конкретно говорит - не помню, если надо скажу. Только я компилил последние стабильные релизы, а ты последние беты. Может в этом дело?
А кстати, как можно запустить нормальный rTorrenent и патченный на 1 машине? Только через Chroot? А по другому можно? :-)
Сентябрь 19th, 2008 at 20:14
Если просто интересно разобраться будет(мне кстати интересно) то можешь на почту скинуть, у меня в http://librarian.spb.ru/work/ указан адрес.
Можно два rtorrent запускать, с разными конфигами, а так да, только через chroot.
Сентябрь 20th, 2008 at 16:46
[...] Конника. Самыми читаемыми статьями в этом месяце были: Torrent рейтинг - 3 Как я оптимизировал систему: Ubuntu 8.04 Hardy Дружим mutt и GMail. [...]
Сентябрь 21st, 2008 at 20:28
I'm sorry...
Короче, я стал компилировать ещё раз, как у тебя написано, и всё получилось. Наверно что-то в прошлый раз не так сделал... :-(
Ноябрь 7th, 2008 at 12:18
Пытался сделать у себя:
"Находим строчку: s << "&uploaded=" << up"
Нету такой, у меня в libtorrent-0.12.2 она выглядит вот так:
s << "&uploaded=" <uploaded_adjusted()
Что на что можно здесь заменить? Все строки для замены, описанные в статье у меня выполняют info... Что делать?
Ноябрь 7th, 2008 at 13:32
Используй более старую библиотеку. Это описано, если не ошибаюсь для 11.
Ноябрь 7th, 2008 at 17:36
Не могу! Ибо FreeBSD и все установлено из портов. Не буду отступать от единой системы, а то забуду потом и наворочу делов :) Кроме того 12 библиотеку требует rtgui 0.2.5!
Ноябрь 8th, 2008 at 03:02
Ну я пока новые версии библиотек не разбирал, и пока не буду. Ноут купил, не до rtorrent.
Декабрь 27th, 2008 at 21:47
у меня стоит 804 убунту, такая же проблема "&uploaded;=" uploaded_adjusted(), скачал версию из 710, заменил строчку скомпилировал, запустил все ок, вот только ifconfig говорит что я отдал 4 гега и на торренте сказанно что отдано 4 гега, тоесть результата ноль, хотя делал умножение uploaded на 3
Декабрь 27th, 2008 at 22:15
Ещё раз повторюсь, это было написано для старых версий библиотеки и самого rtorrent(конкретную версию я уже не помню). Если хотите накрутить рейтинг по описанной здесь методике - используйте старые библиотеки. На новых несколько иная методика отправки данных, разбираться в ней снова и в дальнейшем поддерживать я не хочу и не собираюсь в ближайшем обозримом будущем.
Декабрь 28th, 2008 at 00:43
ок понятно.
Январь 15th, 2009 at 05:23
s
Январь 15th, 2009 at 05:30
в новых версиия домножаем не "up", а "info", то есть будет выглядеть так:
s
Август 11th, 2009 at 22:11
Мне интересно, есть ли готовое решение типа greedy под linux? просто вкомпиливать накрутку рейтинга неохота - негибкое решение...
Август 13th, 2009 at 02:58
Нет, по крайней мере я пока так далеко в изучении С++ не ушёл
Август 13th, 2009 at 21:50
не, имееться ввиду, вообще существует ли таковой в природе (кем-то писанный)?
Август 13th, 2009 at 22:24
Не в курсе, думаю что где то у кого то есть. Azureus(не помню как он сейчас называется) такой функционал с плагином поставляет
Август 14th, 2009 at 19:05
У меня еще вопрос по третьему пункту:
ты пишешь, мол, left тоже надо умножать на тот же коэффициент, что и downloaded. Позволь с тобой не согласиться - например:
торрент весит 100 метров, я скачал 20 метров, в downloaded сказал, что скачал 10 метров (для коэффициента 0.5). Получаеться, я должен в left сказать 90 метров (100 - 20 * 0.5), но на самом деле left = left * 0.5 = 80 * 0.5 = 40
Или я может чего-то не учел?
Сентябрь 7th, 2009 at 19:44
В либторенте я сделал так:
s
Сентябрь 10th, 2009 at 16:11
Блин, хороший коммент, потом в статью добавлю, как раз сейчас пишу статью, с патчами для популярных торрент клиентов
Сентябрь 10th, 2009 at 16:11
TODO: Пофиксить баг этот, с угловыми скобками
Октябрь 1st, 2009 at 01:48
Аэм сори, а код мой видно или нет? )) Если нет, то я еще раз запостю. )
Октябрь 1st, 2009 at 12:51
Видно, правда только мне, я когда патчи свои доделаю, для всяких других современных торрент клиентов - тебя обязательно упомяну.
Октябрь 17th, 2009 at 14:46
Олег, не видно. Если не трудно запости еще раз.