LINUX.ORG.RU
решено ФорумTalks

Зеркало торрент трекера

 


0

1

Дано:

  1. трекер с приватными торрентами, отказаться от которого не представляется возможным. Он часто и надолго падает, имеет драконовские лимиты по рейтингу. Надоело мурыжится
  2. 100к торрент-файлов, которые планируется выборочно качать

Задача:

создать зеркало трекера. подразумевается - опрашивать трекер по таймауту, забирать оттуда все данные, сохранять их в базе, на основе этой базы поднимать локальный трекер.

Писать велосипед или есть готовые решения? (ясное дело под линупс)

★★

Последнее исправление: punya (всего исправлений: 3)

Пиши велосипед, в нем же строчек 40-50 будет, если очень тщательно писать. Посмотри в сторону Mechanize?

cdshines ★★★★★
()

А собственно что ты пытаешься достичь? С какого фига юзеры будут аннонситься на твоем отдельном трекере?

r ★★★★★
()
Ответ на: комментарий от r

не будут анонсироваться на моем трекере

недавно трекер упал на неделю. я пытаюсь добавить торрент - пшык. надо ждать пока он подымется, чтобы хоть одного пира получить (торренты на нем приватные)

punya ★★
() автор топика
Ответ на: комментарий от punya

И как локальный трекер тебе поможет? Откуда пиры узнают, что ты хочешь с них качать? У них же только один трекер прописан, а DHT/PEX отключены скорее всего.

Или ты хочешь просто все торрент-файлы забекапить себе на комп?

leiche ★★
()
Ответ на: комментарий от leiche

т.е. если я обращаюсь к пиру за куском данных, но меня нет в списке на трекере - пир запрос отбросит?

punya ★★
() автор топика
Ответ на: комментарий от punya

т.е. если я обращаюсь к пиру за куском данных, но меня нет в списке на трекере - пир запрос отбросит?

Как ты вообще узнаешь о его существовании? Для этого есть два способа DHT - когда клиенты синхронятся между собой, и аннонс на трекере. Поднимешь ты свой трекер со своим адресмом - ну и что? Анонсов на нем не будет, юзеров на нем не будет - твой клиент даже если ты модифицируешь свои торренты никого не найдет - он таб удет один в поле воин. Чтобы твой трекер заработал он должен быть в списек трекеров торрента - тогда юзера будут аннонсировать свое присутствие на обоих трекерах. А хакнуть трекер подняв свой отдельный трекер не получится.

r ★★★★★
()
Ответ на: комментарий от leiche

блин ты меня запутал и я фигню сказал =)

все торренты у меня забэкаплены. в «дано» написано - 100к штук

что я хочу сделать: по таймауту опрашиваю трекер по всем 100к торрентам. другие юзеры на трекеры мой ип видят, но я ничего не качаю и не раздаю. трекеру посылаю рейтинг некоторый, типа я честный пацан. прихожу домой после работы и мне пофигу упал трекер или нет - качаю и смотрю что хочется

punya ★★
() автор топика
Ответ на: комментарий от r

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

punya ★★
() автор топика
Последнее исправление: punya (всего исправлений: 1)
Ответ на: комментарий от punya

но я ничего не качаю и не раздаю.

Расшифруй слово не «не раздаю». Аннонсируешь ты пару (контент, ip). Юзера никаких твоих ip запоминать не будут - им нафик не нужно. Им нужно что у тебя есть.

прихожу домой после работы и мне пофигу упал трекер или нет - качаю и смотрю что хочется

Ты «у кого получать» получаешь из постоянных анонсов, а не из астрала. Для того чтобы запустить сценарий который ты хочешь - тебе надо не трекер поднимать а торрент клиент переписывать чтобы он хранил информаицию о чужих аннонсах как можно дольше - а ты надеялся что эти пиры все еще онлайн, когда «придешь вечером с работы».

А на приватных торрентах может вообще не сработать - суть приватного торрента в том что он _обязан_ работать через трекер. Если другие клиенты будут сверять твой адрес со списком последнего аннонса и посылать тебя на приватном торренте. Уж не говоря о том что тебе придется переписать клиенты и твоих пиров - с какого фига они вообще с тобой работать будет в рамках запрещенного DHT если они не смогли сами аннонсироваться на трекере потому что он лежит?

r ★★★★★
()
Ответ на: комментарий от r

хранил информаицию о чужих аннонсах как можно дольше

вот именно. по идее можно сделать не переписывая клиент, а создать специальный локальный трекер

другие клиенты будут сверять твой адрес со списком последнего аннонса

и я буду в этом списке

punya ★★
() автор топика
Ответ на: комментарий от punya

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

Вряд ли существует какое-то готовое решение под твою задачу, подозреваю, тут только читать про GET-запросы и формат ответов в битторрент-сетях, и выдумывать костылики.

leiche ★★
()
Ответ на: комментарий от leiche

ясно. буду ковыряться. если результат будет - потом создам тему =)

punya ★★
() автор топика

Что за трэкер? Может проще альтернативы искать? Я зареган на 3 трэкерах одной тематики, может тоже поискать еще парочку?

vladkuzm
()
Ответ на: комментарий от punya

Прочитал комментарии, вроде понял, что ты хочешь.
Ну смотри, самая трудная задача - это сделать зеркало .torrent-файлов. Сам же понимаешь, нужно пробираться сквозь кучи HTMLя к заветной ссылке, ну или хотя бы к хэшу. Тут не могу ничего конкретного сказать - не пробовал.
А вот по поводу торрентов могу подробнее рассказать. Там всё на самом деле элементарно, только придется покодить. Трекер опрашивается через обычный HTTP, думаю, что можно просто закэшировать ответ и отдавать его своему клиенту при запросе, т.е. даже не парсить. Если трюк не пройдет, то тебе понадобится парсер bencode - его найти не проблема для любого ЯП, да в принципе и он не нужен. Ну и да, если голого хэша у тебя нет, то придется парсить .torrent, там внутри тот же bencode, плюс есть готовые либы именно для .torrent-файлов.
Если захочешь парсить ответ и нужны подробности - пиши в комменты, занимался когда-то этой штукой.

h31 ★★★★
()
Ответ на: комментарий от leiche

ведь на закрытых трекерах обычно есть список разрешённых клиентов

Они тупо смотрят User Agent из HTTP-заголовка. Ну может особо умные смотрят на peer_id, его тоже можно спокойно подменить, если трекер использует компактные ответы (ныне это 99% трекеров) и бот не планирует соединяться с пирами (а зачем ему?).

нужно будет, чтобы у них был открыт порт на приём внешних соединений

У бота и нормального клиента будут разные порты и разные peer_id, т.е. они будут выглядеть как два разных клиента, которые просто сидят с одного адреса, например, из-за NAT. Т.е. бот вообще не будет конфликтовать с торрент-клиентом, просто параллельно висеть.

h31 ★★★★
()
Ответ на: комментарий от h31

У бота и нормального клиента будут разные порты

При чём тут это. Я имел в виду, что пиры могут быть за фаерволом и не принимать входящие соединения от ТСа. Он ведь собирается подключаться к ним напрямую, без трекера, зная адрес и порт.

leiche ★★
()
Ответ на: комментарий от punya

а создать специальный локальный трекер

На твоем локальном трекере их аннонсов не будет. ТАм никого кроме тебя не будет.

и я буду в этом списке

Откуда? Трекер же лежит.

r ★★★★★
()
Ответ на: комментарий от leiche

Он ведь собирается подключаться к ним напрямую, без трекера, зная адрес и порт.

Торенты и так работают именно так. Если будет два пира оба за фаерволом - не сростется каменный цветок.

r ★★★★★
()
Ответ на: комментарий от r

может быть и не выйдет локальный трекер сделать. может придется подкостылить клиент. буду смотреть. как чотко подметил h31 моя задача - отдать последний кэшированный ответ трекера.

сухой факт : если трекер упал - то сиды все равно раздают личерам. список данных о пирах хранится у всех с последнего обращения к трекеру

punya ★★
() автор топика
Последнее исправление: punya (всего исправлений: 1)
Ответ на: комментарий от punya

то сиды все равно раздают личерам

Если разрешен DHT, если торренты на самом деле не приватные или клиенты на это забивают, и пока не сдохли пиры обламавшись на анонсах.

r ★★★★★
()
Ответ на: комментарий от leiche

При чём тут это. Я имел в виду, что пиры могут быть за фаерволом и не принимать входящие соединения от ТСа. Он ведь собирается подключаться к ним напрямую, без трекера, зная адрес и порт.

А, неправильно тебя понял, думал, ты про другое.
Ну с этим ничего не поделаешь. Опять же, если там рейтинг, то наверняка будет и куча обладателей белого IP.
Кстати, punya, там сами торренты приватные? В смысле разрешены ли DHT и PEX?

h31 ★★★★
()
Ответ на: комментарий от r

Так бы трекер подсказал, что есть заинтересованный скачивать, и пир сам инициировал бы соединение. Понятное дело, если сам ТС при этом connectable.

leiche ★★
()
Ответ на: комментарий от r

Это правда кстати, punya, такой момент тоже надо учитывать.

Один раз качал фильм с какого-то завалящего закрытого трекера, с раздачей было плохо, и вышло так, что я загружал 500 КБ/с, с прыжками до 2МБ/с, а отдавал 7. В итоге через определённое время закачка прекратилась, 0 соединений, а в статусе трекера светилось Error: Account suspended. Техподдержка чего-то решила, что я не предупредив их, установил сидбокс, лол.

leiche ★★
()
Последнее исправление: leiche (всего исправлений: 1)
Ответ на: комментарий от r

Юзера никаких твоих ip запоминать не будут - им нафик не нужно. Им нужно что у тебя есть.

А при чем тут юзеры? Бот не будет соединяться с ними, только с трекером. Отправит в анонсе левый порт, который даже не открывал. (Fix: лучше открыть, т.к. античит на трекере может для проверки сам подключиться, но это нужно экспериментировать) Ну захочет какой-нибудь пир подключиться - не сможет и плюнет, ибо ситуация нередкая (NAT, сеть отрубилась и т.д.).
Когда punya придет домой, подключится полноценный торрент клиент с другим peer_id и с другим портом, для других юзеров это будет совсем другой пир.

торрент клиент переписывать чтобы он хранил информаицию о чужих аннонсах

А каким образом в торрент-клиент вообще попадают чужие анонсы?

а ты надеялся что эти пиры все еще онлайн, когда «придешь вечером с работы»

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

суть приватного торрента в том что он _обязан_ работать через трекер

Ты путаешь две части протокола - взаимодействие с другими пирами и взаимодействие с трекером. Цель второго - просто получить адреса пиров и не больше. DHT и PEX, если они разрешены, работают с той же целью, никакие данные они не передают. Результат работы что общения с трекером, что DHT, что PEX - добавление записей вида ip:port в табличку, и не более того. А части клиента, которая отвечает за P2P соединения, по барабану, откуда взялись данные из этой таблички. Поэтому нет такого явления как «работать через трекер». Часто встречаю совет вида «отключите DHT, через него может передаваться часть данных, которая потом не учтется в рейтинге» - тоже неверно по той же причине.
Хорошо, предположим, что какой-нибудь вумный uTorrent проверяет, был ли пир в анонсе, но на раздаче наверняка будет вышеупомянутый сидбокс с тупым как валенок rtorrent, который с удовольствием начнет передачу.

h31 ★★★★
()
Последнее исправление: h31 (всего исправлений: 1)

Да, про античит я совсем забыл. Но тут не могу ничего сказать - трекером этим не пользуюсь, тут только экспериментировать.

h31 ★★★★
()
Ответ на: комментарий от h31

на моем трекере явно нет античита. там админ лошара космический =)

я первый раз от балды отправил себе в статистику «uploaded» - «500TB». через 2 недели я узнал что на сайте есть страница «top 10» и я там вишу на первом месте.. только через месяц этот аккаунт забанили

да и недавнее падение трекера на целую неделю(!) тоже показательно

punya ★★
() автор топика
Ответ на: комментарий от h31

А каким образом в торрент-клиент вообще попадают чужие анонсы?

Через трекер - он для того и нужен.

Цель второго - просто получить адреса пиров и не больше.

Кроме флага private. Тут уже начинается интереснее.

добавление записей вида ip:port в табличку, и не более того.

на указанный hash а не всего миллиона людей на трекере.

Поэтому нет такого явления как «работать через трекер».

Зато есть «при попытке аннонса торрента с указанным хешом получили облом с рекера - все данныё ассоциированные с этим хэшом удалить». Сколько они там хранятся после последнего удачного аннонса?

но на раздаче наверняка будет вышеупомянутый сидбокс с тупым как валенок rtorrent, который с удовольствием начнет передачу.

Еси он не учитывает флаг private о котором говорит топик стартер.

r ★★★★★
()
Ответ на: комментарий от r

Туда, куда сообщил бы трекер.

если сам ТС при этом connectable

leiche ★★
()
Ответ на: комментарий от r

Кроме флага private. Тут уже начинается интереснее.

ты хочешь сказать, что private торрент не будет тебе раздаваться сидами до тех пор, пока сид не полчит анонс с трекера, в котором есть твой клиент? смахивает на переупотребление веществ.

maloi ★★★★★
()
Ответ на: комментарий от r

Еси он не учитывает флаг private о котором говорит топик стартер.

Я тебе про одно, а ты про другое. Он примет соединение и будет раздавать, так за P2P отвечает другая часть программы, которой флаг private вообще не касается.
Хорошо, вот пример. Обычно период опроса трекера где-то 30-50 минут, можешь посмотреть его в свойствах торрента на вкладке «Трекеры». Вот ты решил что-то скачать, наживаешь «Старт» и секунд через 5 начинают передаваться данные, а в списке пиров уже довольно порядочное их число. Однако при этом никто из сидеров о твоем клиенте не знает, ведь вероятность того, что кто-то из них сделал анонс в эти 5 секунд, крайне мала. То есть у тех сидов в списке пиров твоего клиента ещё не было, а передача всё равно идет.

Через трекер - он для того и нужен.

В запросе на трекер присутствует довольно много информации, например, сколько было скачано и отдано, однако эту информацию он никому не выдает, а отдает лишь ip:port (в случае древних трекеров ещё и peer_id), т.е. самих анонсов он никому не ретранслирует.

Кроме флага private. Тут уже начинается интереснее.

Абсолютно то же самое. Просто количество известных пиров будет меньше.

на указанный hash а не всего миллиона людей на трекере.

Ну ясен перец что табличка для конкретного торрента, а не для всех сразу.

«при попытке аннонса торрента с указанным хешом получили облом с рекера - все данныё ассоциированные с этим хэшом удалить»

Никогда о таком не слышал, это что за клиент занимается такой самодеятельностью? Опять же, для «облома» нужно получить конкретную ошибку в ответе, что-то типа 404. Если просто кабель отвалился, то сразу нужно всё удалять?

h31 ★★★★
()
Ответ на: комментарий от maloi

смахивает на переупотребление веществ.

After the DHT was adopted, a «private» flag — analogous to the broadcast flag — was unofficially introduced, telling clients to restrict the use of decentralized tracking regardless of the user's desires.[16] The flag is intentionally placed in the info section of the torrent so that it cannot be disabled or removed without changing the identity of the torrent. The purpose of the flag is to prevent torrents from being shared with clients that do not have access to the tracker. The flag was requested for inclusion in the official specification in August, 2008, but has not been accepted yet.[17] Clients that have ignored the private flag were banned by many trackers, discouraging the practice.

r ★★★★★
()
Ответ на: комментарий от r

тут нигде не говорится, что клиенты должны вести себя так, как говоришь ты. restrict the use of decentralized tracking - это всего лишь отключение PE и DHT.

вот например первая попавшаяся ссылка на детали реализации этого в торрент-клиенте http://wiki.vuze.com/w/Private_torrent

maloi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.