Где торрент хранит торрент файлы
Решение банально — убрать этот нехороший адрес из списка. Однако файлов у меня много, из каждого вручную вырезать совсем не хочется, да и дополнительное действие при добавлении нового торрента выполнять тоже не было никакого желания. Поэтому принял решение разобраться в формате и автоматизировать удаление трекера из списка.
Bencode
Именно так называется формат кодирования данных в .torrent-файлах. Больше он почти нигде и не используется, мне попадался он на глаза так же в формате хранения resume-информации в Transmission.
Для большинства актуальных языков написаны библиотеки для работы с этим форматом, но не для C++, да, конечно, есть такая штука, но это чистый Си и кроме того форма представления мне не показалась удачной, поэтому написал простенький свой велосипед, ибо формат крайне прост.
Описываются 4 типа данных — массив байт, число, список, ассоциативный массив.
- Числа задаются в форме ie, — это цифры в ascii представлении, то есть 1 задаётся как '1' или 0x31. Заметно что так мы можем задавать огромные числа, которые не влезут ни в long, ни в long long, однако большинство пренебрегают отсутствием лимита и используют 64-битные числа.
- Массив байт — : . Длина массива так же формируется неограниченной последовательностью цифр.
- Список — le. Элементом может являться любой из типов данных. В том числе и вложенный список. Конец, как видно из формата, отмечается литералом 'e'.
- Ассоциативный массив — de. Каждый элемент массива выглядит таким образом — . Массив байт — это имя записи в форме из пункта 2. Элемент опять же может быть любым — список, массив, ассоциативный массив, число.
Это всё. Сам файл это последовательность таких записей. Поэтому декодирование крайне просто выполняется:
Кодирование тоже несложно:
Структура .torrent-файла.
Как я уже писал выше для кодирования используется Bencode.
Стоит добавить что если массив байт может быть интерпретирован как строка (имена элементов в ассоциативном массиве, просто строковые поля), то используется кодировка utf-8.
Необходимо упомянуть то, что файлы представлены в протоколе кусками. То есть файлы содержащиеся в торренте объединены в единый массив, и затем этот массив разделили на относительно небольшие кусочки. В таком виде данные обрабатывает BitTorrent-протокол.
- piece length — размер одного кусочка — 512 килобайт, 1 метр, и так далее. Слишком большое число кусков будет «раздувать» .torrent-файл.
- pieces — строка, которая содержит конкатенацию SHA1-хешей, описывающих каждый кусочек. Длина этой строки равна 20 * количество кусков.
- name — рекомендательное имя файла (если файл один) или директории. Увы многие торрент-клиенты воспринимают это как аксиому.
- length — если файл один, то будет задано это поле, которое содержит длину файла.
- files — если файлов несколько, то появится список ассоциативных массивов.
- length — длина файла.
- path — список из строк, которые задают путь. Каждая строка — элемент пути, относительно корневой директории торрента. Для пути a/b/c/d.jpg будет 4 строки в данном списке — ['a', 'b', 'c', 'd.jpg'].
В общем-то это всё.
Нам в данный момент нужно только одно поле — announce-list. Пробегаясь по этому списку находим неугодный трекер и вырезаем его:
Демоны и watch-directory.
Таким образом мы можем пробежаться по существующим .torrent-файлам и вырезать трекер, однако что делать с новыми файлами?
Я использую удобную штуку — watch directory. Кидаем туда .torrent и клиент обнаружив его в этой папке, сам автоматически добавит его к себе.
Однако мне совсем не хочется предварительно вырезать трекер, а желаю автоматизировать это дело.
Поэтому написал простенький демон, который мониторит собственную watch directory, удаляет трекер и кидает файл в watch directory торрент-клиента.
Для меня как пользователя абсолютно ничего не поменялось, кидаю файлы в ту же папку, получаю на выходе торрент в клиенте.
Демона пишем на Си с использованием замечательной штуки — inotify,
Инициализируем модуль с помощью inotify_init(), затем добавляем директорию для слежения inotify_add_watch(), нас интересует только создание файла, поэтому указываем флажок IN_CREATE. А затем крутим бесконечный цикл слежения за директорией.
Блокирующий вызов read() вернёт нам управление как только произойдут нужные нам изменения в одной из директорий, за которыми следим. Таким образом мы абсолютно не грузим процессор во время ожидания.
Сама обработка файла не представляет из себя ничего интересного — пара вызовов rename() и один вызов system().
Папку, в которую uTorrent сохраняет загружаемые и уже загруженные файлы можно указывать вручную перед началом каждой закачки, либо прописать один раз в настройках программы и забыть об этом навсегда.
Откройте настройки uTorrent и перейдите в раздел «Папки».
Поставьте галочку в окне «Помещать загружаемые файлы в …» и нажмите на символ многоточия справа.
В открывшемся окне проводника выберите заранее подготовленную папку на компьютере.
Совет: загрузки лучше хранить отдельно от операционной системы, но не на съемном диске. Папку назовите латинскими буквами, например «Downloads», «Films», или как-то еще по своему.
Если желаете хранить все скачанные через торрент файлы на съемном носителе (флешке или HDD), или на сетевом диске, то лучше скачать файлы сначала на компьютер, и уже потом переместить во внешнее хранилище. uTorrent умеет это делать автоматически: в том же окне настроек для этого нужно отметить галочкой параметр «Перемещать завершенные загрузки в…» и выбрать там новую папку. В таком случае процесс закачки будет протекать стабильнее.
Теперь разберемся с местом хранения файлов с расширением «.torrent». По умолчанию uTorrent хранит их в скрытой директории, которую без подсказки не найти на компьютере. Так сделано специально, чтобы неопытный пользователь случайно не удалил эти файлы и не повредил неоконченную загрузку.
Изменить расположение «торрент-файлов» можно в том же окне настроек. Отметьте галочками опции «Сохранять в…» и «Перемещать завершенные в…», если необходимо. Не забудьте, что названия у этих папок должны быть обязательно на латинском языке.
Здесь же можно настроить, чтобы uTorrent сам автоматически находил на компьютере новые торренты и добавлял их в список загрузок (сканирование происходит при запуске программы).
Для этого отметьте галочкой опцию «Automatically load .torrents from» и выберите папку, в которую вы сохраняете скачанные с сайтов торренты. Обычно это стандартная папка «downloads» браузера.
Если активировать опцию «удалять загруженные торренты», то файлы из этой папки будут удаляться сразу после добавления в uTorrent. Но на компьютере они все равно останутся - в той папке, что вы выбрали выше. И будут храниться там, пока закачка не будет удалена из интерфейса программы.
У вас на ПК установлена торрент-программа? И вы хотите узнать, где именно она установлена и куда качает файлы? Окей. Мы сегодня постараемся разобраться с этими двумя вопросами!
- Как узнать куда качает торрент-прога файлы. А также расположение скачанных файлов по умолчанию.
- Куда устанавливается торрент-прога, тоже папка по умолчанию и способ как узнать самостоятельно.
Данная инструкция подходит для Windows 10, но скорее всего для Windows 7 — все также четко будет работать!))
Расположение торрента — разбираемся
У меня на компе установлено две популярных торрент-программы, это uTorrent и BitTorrent, хотя такое чувство.. что это одинаковые проги, просто чуть разное оформление, а движок один и тотже..
uTorrent все таки намного популярнее, поэтому сперва разберемся с ним. В общем я открыл uTorrent, иду в загрузки, у меня там есть одна закачка, все уже скачалось давно:
Теперь нажимаю по этой закачке правой кнопкой и выбираю пункт Открыть папку:
Важно понимать, что никакие настройки я не изменял! Вообще! Поэтому откроется папка по умолчанию, куда uTorrent скачивает файлы, у меня открылась вот эта папка:
Если вы не меняли настройки, то у вас тоже откроется папка Downloads, которая по сути является папкой Загрузки. Если у вас в торренте нет закачек, и вы не меняли настройки, то можете просто открыть папку Загрузки из окна Этот компьютер, и увидите, что все что вы качали — скачивалось именно туда.
Но куда сам uTorrent устанавливается? Здесь тоже покажу интересный способ как узнать:
- Запускаете uTorrent.
- Идете в диспетчер задач.
- Находите там uTorrent, неважно — в процессах или на первой вкладке. Хотя нет, лучше все таки в процессах..
- Нажимаете правой кнопкой, выбираете пункт Открыть расположение.
- Откроется папка, откуда запускается uTorrent, соответственно эта папка является и той, куда он установился.
У меня открылась эта папка:
У вас скорее всего будет такая же. Только имя учетной записи будет другое, не Dima))
Теперь что у нас там с BitTorrent? А прикол господа в том, что там все почти также как и в uTorrent — файлы по умолчанию также качаются в папку Загрузки. Вот только папка установки самого BitTorrent отличается и то.. потому что название торрент-проги другое.. короче ставится в эту папку:
Местоположение установки uTorrent в Windows
Старые версии uTorrent устанавливались в папку «Program Files» на системном диске. Если у Вас версия клиента старее 3, то ищите там.
Конфигурационные файлы в этом случае находятся по пути
C:\Users(Пользователи)\Ваша учетная запись\AppData\Roaming
Новые же версии целиком устанавливаются по указанному выше пути.
Небольшой «лайфхак»: для того чтобы найти место, где находится исполняемый файл программы (в нашем случае uTorrent), нужно кликнуть правой кнопкой мыши по ярлыку и выбрать «Расположение файла». Откроется папка с установленным приложением.
Также местоположение файла отображается во всплывающей подсказке при наведении курсора на ярлык.
Теперь вы знаете, где найти папку с установленным торрент-клиентом uTorrent.
Мы рады, что смогли помочь Вам в решении проблемы.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
Еще статьи по данной теме:
а может ли быть такое, что торрент сам себя скрыл или задал режим «только чтение и выполнение», ибо я его не смог удалить, а потом увидел, чо в свойствах папки были такие разрешения установлены. P.S. пользуюсь компьютером один и никто не мог мне поставить запрет на удаление, только если какой-то вирус скрытно это сделал, хотя тоже врятли
юТоррэнт вообще отстой. Мало того, что устанавливается чёрти пойми куда, так ещё при установке несколько троянов выловилось. Ну поставила еле как. А дальше что вы думаете? Лезет модифицировать автозапуск или сам там сидит (я не совсем поняла). В общем, в топку этот майнер… Сношу. И отправляюсь в поисках альтернативы.
а еще уточняйте что надо отобразить скрытые и системные папки и файлы
Можно ли изменить путь установки новой версии uTorrent? Спасибо.
Здравствуйте. К сожалению, такая возможность отсутствует, разработчик не позволяет указывать свой путь для установки.
Если какой либо способ поменять папку установки, или хоть установить его в ту самую AppData-у, но только другого пользователя?
Как удалить uTorrent или BitTorrent?
В жизни бывают разные ситуации, иногда нужно прогу переустановить или даже удалить, она вам не угодила, работает плохо, качает медленно, в общем глючит, тупит..
Я покажу штатный виндовский способ удаления программы:
- Зажмите Win + R, появится окошко Выполнить.
- Вставьте команду appwiz.cpl, нажмите ОК.
- Откроется окно со списком установленного софта.
- Найдите тут uTorrent или BitTorrent (смотря какую именно хотите удалить), нажмите правой кнопкой, выберите Удалить.
- Следуйте инструкциям на экране. Да, обычно нужно нажимать Далее/Next/Удалить/Uninstall.. собственно ничего сложного нет.
Хм, интересный моментик.. у обоих программ один и тот же издатель, то есть разработчик — BitTorrent Inc, совпадение? Не думаю..
Если вы продвинутый юзер и с компом на ты, то можете использовать для удаления специальные удаляторы — они не только удалят прогу но и почистят систему от остатков. Всего существует два годных удалятора, это Revo Uninstaller и Uninstall Tool. Первый — мощный, второй попроще. Мне нравится первый..
Но вообще почистить винду CCleaner-ом после удаления софта — всегда хорошее дело..
В контексте последних законов, событий и тенденций как никогда очевидна ценность рутрекера как базы данных различного контента, а не как конкретного ресурса. К сожалению все мои призывы к администрации рутрекера предоставить общедоступный, полный, удобный дамп их базы наткнулся на полное непонимание с их стороны. Выкладывать нечто, что они называют зашифрованной «базой» — я не считаю решением проблемы по причинам, изложенным в вышеприведенных ветках обсуждения и продублированным ниже.
К сожалению, решить проблему своими силами у меня не хватило ни времени, ни, будем откровенны, знаний. Но, к счастью, мои слова возымели действие на людей, которые и тем и другим обладают. В итоге эти люди организовались и сообща сделали то, о чём так долго говорили большевики о чем я писал, а именно с помощью скриптов обошли рутрекер, сдампили все описания раздач с хешами, распарсили их и скомпоновали в удобную для употребления базу. В дополнение к этому так же была написана «морда»: программа для удобной работы с базой конечных пользователей, не знающих с какого конца держат grep. К сожалению, аккаунта на хабре никто из этой команды не имеет (если не считать read-only), в песочнице статья могла бы потеряться, поэтому меня выбрали как рупор для данной площадки. Я, честно говоря, раздумывал совсем недолго и только над тем, как правильнее все сделать. Если будут какие-то вопросы — задавайте мне в комментах, я либо отвечу сам, либо переадресую разработчикам. Технические тексты от первого лица, но я имею к ним косвенное отношение, они оставлены в таком виде для простоты восприятия.
Прежде, чем перейти к технической части и ссылкам, хотел бы добавить, что весь смысл этой затеи в том, чтобы как можно больше людей сохранили эту базу к себе. Поэтому очень Вас прошу, скачать данные по ссылкам ниже (желательно использовать торрент) и оставаться на раздаче как можно дольше. Скорее всего в будущем база будет обновляться, но этот момент еще не продуман до конца.
Описание формата хранения базы раздач
Число раздач в базе: 1411636
Имеется два места хранения: таблица и база описаний.
В таблице хранится номер раздачи на рутрекере, название раздачи, приблизительный размер в байтах, число сидов, число пиров, хеш в формате base32, число скачиваний и дата обновления раздачи. Размер раздачи приблизительный, так как он был получен парсингом строк вида «2.05 GB». К сожалению, не было найдено способа узнать точный размер из исходного кода страницы раздачи. Название раздачи закодировано в UTF-8, чтобы на системах, где стандартной является эта кодировка, файл можно было смотреть less'ом без дополнительных манипуляций. Хеш раздачи в base32, чтобы занимало меньше места. В графической программе для просмотра базы есть возможность переключения отображения хеша (в том числе, в magnet-ссылках) на HEX. Разделитель полей: TAB. Все пробельные символы в именах раздач заменялись на пробелы. Все HTML-конструкции в названиях заменялись на соответствующие символы юникода, это ещё одна из причин, почему от cp1251 отказались в пользу UTF-8. Дата кодируется в формате: «16-Jul-11 06:23». Английские названия месяцев выбраны, чтоб было меньше заморочек с парсингом.
Пример:
База описаний представляет собой коллекцию tar.gz-файлов, в каждом из которых лежат раздачи с шагом номера 1000. gzip выбран из-за скорости и неприхотливости к объему оперативной памяти. Архивные файлы сгруппированы по 100 штук в папки. Описание раздачи с номером 1234567 лежит в файле 012/01234.tar.gz/01234567 в кодировке UTF-8.
Программа
Исходники. Лицензия GNU GPL v2. Присылайте пулл-реквесты.
Файл с таблицей может быть сжат в gzip, bzip2 или lzma/xz (под windows, к сожалению, последний вариант не поддерживается в нашей сборке). Файл распаковывается и просматривается на лету, без полной распаковки и создания временных файлов. Это реализовано при помощи класса KFilterDev из библиотеки kdelibs. Было выяснено, что gzip и xz дают намного лучшую скорость распаковки, чем bzip2, поэтому от последнего отказались при выборе формата, в котором база будет распространяться. Gzip показал скорость, в разы большую xz, и присутствовал на windows в используемом варианте библиотеки kdelibs. Поэтому выбор пал на gzip, несмотря на проигрыш в сжатии в полтора раза. Пользователь может распаковать таблицу самостоятельно или использовать соответствующую опцию меню, чтобы хранить на диске таблицу без сжатия. Кстати, не факт, что это приведет к ускорению поиска, так как больший объекм данных будет считываться с жесткого диска при поиске, а чтение с жесткого диска может быть медленнее, чем распаковка gzip.
Рассмотрим таблицу. Думаю, значение столбцов не нужно объяснять. По всем столбцам можно сортировать, а по умолчанию результаты отсортированы по количеству загрузок. Для реализации сортировки пришлось наследоваться от QTableWidgetItem и определять операцию сравнения.
Если дважды щелкнуть по любой ячейке, значение в ней выделяется и становится пригодным для копирования.
Реализация перехвата событий мыши на ячейках выполнена путем наследования от QItemDelegate и определения editorEvent. Получение описания из соответствующего tar.gz реализовано средствами класса KTar из библиотеки kdelibs.
Программой можно пользоваться, не располагая базой описаний раздач, тогда просмотреть описание можно будет только через сайт, нажав по номеру раздачи.
Настройки программа хранит в файле dump_viewer.ini, расположенном в папке с программой.
Инструкции для сборки программы для ОС Debian GNU/Linux и ОС Windows находятся в файле INSTALL.
В ходе разработки программы забавный казус вышел с парсингом дат. Формат даты «16-Jul-11 06:23» нестандартный, но он был оставлен, потому что довольно краткий, читаемый и похож на тот, который использует rutracker в своей выдаче. Оказалось, что QDateTime::fromString ожидает локализованные обозначения месяцев (Янв вместо Jan в русскоязычном окружении). Поэтому пришлось написать костыль, конвертирующий текстовые обозначения месяцев в числовые (Jan -> 01).
Зачем мы это сделали?
rutracker же написал, что шифрованная раздача у них на трекере лучше!
Ответ: (подробнее тут и тут)
а) У нас есть описания раздач. Часто сложно бывает выбрать, например, BDRip, не глядя в описание. Ужимается база всех описаний до ~2 гигабайт. Можно было ужать сильнее, но решили не экономить в ущерб скорости работы «морды». (На самом деле есть еще несколько мыслей по оптимизации, но пока решили, что лучшее враг хорошего. Однако ж идеи и коммиты привествуются!)
б) Даже если группа людей, которая знает пароль, распределена по всему миру — это конечная группа людей, которую можно вычислить и обладая нужными ресурсами купить или запугать.
в) Администрация рутрекера и лично intellect бесспорно бесконечно честные люди, но пока я сам не увижу, что в раздаче именно база рутрекера, а не зашифрованный белый шум — я никому не поверю. Уж извините.
г) Нет проблемы фейковых сайтов и поддельных магнитных ссылок. Базу может сделать не только администрация (наша база тому пример), так что шифрованность базы на рутрекере не спасает. А валидность хешей в базе проверяется либо по контрольным суммам (с GPG-подписью), либо банальным сравнением с самим рутрекером (если он все еще доступен).
д) Для того, чтобы в базе были актуальные раздачи — базу банально надо обновлять. Чем чаще, тем лучше. И если администрация рутрекера действительно заботится о том, чтоб пользователи получали актуальную информацию, надеюсь они не будут чинить препятствий в обновлении нашей базы. А то и помогут, чем черт не шутит.
Дальнейшие планы
Следующий логичный шаг — сделать генератор HTML[PHP]-сайта, дублирующего функциональность программы и базы. После этого мы хотим замахнуться на статическую реализацию всех частей сайта, то есть чистый HTML/CSS/JS, без PHP или подобной серверной логики. Это позволит заливать сайт практически на любой хостинг, в том числе бесплатный, что сделает в принципе невозможным искоренение данной базы из сети. На тему реализации поиска на JavaScript уже есть идеи (к примеру, сделать индекс раздач по словам, разбить его на отдельные файлы, балансируя между средним размером одного файла и общим числом файлов). Можно добавить и полноценную реализацию поиска на стороне сервера. К сожалению толковых веб-разработчиков у нас нет, ищутся желающие.
Проделать подобное для других трекеров. Для пиратской бухты уже сделали. Когда база данных рутрекера будет дочищена, можно перейти к другим отечественным и иностранным трекерам. Можно подумать, как все базы объединить в одну (видимо, по файлу на трекер, чтобы было удобно выбирать нужные трекеры при скачивании).
Распределенное обновление базы раздач. Разумеется, нужно периодически обновлять базу: добавляются новые раздачи, обновляются старые. А почему бы не переложить задачу обновления на пользователей? Само собой, тех, кто на это согласится. Во-первых, наши каналы не резиновые, чтобы самим постоянно дампить трекер(ы). Во-вторых, трекеры нескольких пауков могут и обнаружить с последующим баном и, возможно, разбирательством. а если пауков будет 100, то каждый из них будет забирать новые раздачи слишком медленно, чтобы это можно было обнаружить. Для пользователя это будет выглядеть как пункт в программе «Принять участие в обновлении базы» и ввод данных для входа в свой аккаунт. Дальше программа всё сделает сама. Найденные свежие раздачи и изменения в старых будут отправляться в центр, который после их проверки будет добавлять данные в общую базу.
Кстати, интересная задачка по теории вероятности: если N раздач наугад качают M независимых пауков со скоростью X раздач в сутки, то через какое время (ожидаемое) они выкачают долю Y всех раздач?
Ссылки и контакты
bitbucket (исходники и база раздач без описаний)
mega.co.nz (только база описаний, распаковать основной tar в папку с программой)
Торренты (все в одном):
i2p (в процессе заливки и индексации)
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)
P.S. Хотелось бы выразить благодарность команде LAVteam за техническую поддержку.
UPD: Так же большое спасибо init0 за инвайт для непосредственного представителя команды разработчиков — ratnik0. Вы не однофамильцы, кстати? ;)
UPD2: Если у кого-то под виндой программа требует ssleay32.dll, то Вам поможет установка библиотек openssl.
UPD3: Создали джаббер-конференцию для координации сочувствующих и обсуждения дальнейших планов: torrents-database@conference.jabber.no
UPD4: Кто голосовал за дамп порнолаба? Нужна Ваша помощь — ждем в конференции.
UPD5: rutor удалил раздачу без объяснения причин.
Зачастую пользователи, установив uTorrent, пытаются найти папку, в которую он установился. Причины для этого могут быть разные: от поиска конфигурационных файлов до ручного удаления программы.
Читайте также: