Няколко уточнения за BitTorrent
Обновена на: March 24, 2022Почти мога да си спомня последния път, когато съм говорил/писал или презентирал нещо за Р2Р. С оглед на някои скорошни новини, които експлодират ей така, ми дойде на акъла да опиша някои неща.
Искам да почна с Брам Коен и Джед Маккалеб (колажът реших да пресъздам, щото старият хем е твърде стар, хем не включва нашенеца) – създали съответно BitTorrent и eDonkey. Брам очевидно е имал по-яка идея за протокол, но Джед прави нещо стимулиращо – неговият софтуер позволява дистрибутирано споделяне на файлове. DHT-то съвсем леко напомня блокчейна, като принципът е клиентът да се бутстрапне с определен брой ноудове (други потребители на протокола) посредством UDP, след което една таблица на база ключ-стойност се разпространява, споделена в swarm-a. По тази таблица клиентът може да се ориентира своя торент от кои хора да дърпа. Това прави нуждата от тракер (сървър, който да следи транзакциите) почти нулева. Казвам почти, защото традиционно тракерите следят дали един потребител има право да установява трансфери. Представи си Замунда, която е частен тракер. Не можеш просто да споделиш торент с друг – вероятно е да успееш да го свалиш без регистрация [citation needed].
Както и да е, важното е, че Коен се кефи на идеята и вкарва имплементацията Kademlia, която ако не изцяло, то голяма част е българска (била е дисертацията на Петър, ако не се лъжа). Та цялото т’ва нещо позволява споделяне метаданни децентрализирано, което е супер. Друго нещо, което Коен е заел от eDonkey, са специалните URI-та за споделяне на данни. Magnet links представлява стринг, който хем посочва SHA1 хеш на торента, хем допълнителни параметри (в които и флагове за частни тракери), чрез които останалите метаданни за торента мога да се дръпнат или по DHT (идеалния случай), или чрез тракер, който също може да бъде специфиран в самия магнитен линк.
Легалната база за такива линкове все още ми е неясна (все пак не хостваш нищо, за разлика от торент файловете, и не зная дали се води “подпомагане на пиратерия”), но е факт, че спаси Piratebay от цялостен крах. Замунда също от няколко години ползва магнитни линкове и може би си забелязал, че рейтинг от тях не се траква.
Цялото т’ва прелюдие беше, понеже коментирахме идеята да се скрейпнат всички магнитни линкове от Замунда и да се направи малка база за по-лесен миръринг. Но все още не съм наясно с легалните проблеми.
Искам също да спомена торент клиентите, а с параграфът ще вляза и в някои тънкости на протокола. На Windows оказвам да ползвам каквото и да е освен uTorrent 2.0.4. Истината е, че дълго време се клех в 2.0.2, но тя не се разбира с Windows 10, защото разбира се. Както и да се, 2.0.4 работи добре, последната версия преди “кръглото” uTorrent лого, няма и реклами, естествено. Абе, адвокирам и ползването на 2.2.1, но там вече настъпваме гадния адуер за опашката.
Версията, която аз предпочивам, иска малко ръчни настройки, за да е оптимална в ден днешен божий. Като за начало, обичам да налагам крипто трансфери, защото по подразбиране са изключени. Забранявам некриптирани трансфери като среден пръст към ISP-тата най-малко. Също, въпреки че 2.0.4 поддържа IPfilter, няма настройки за него в UI-a. Написах малък batch (факинг мразя) скрипт за дърпане на филтър от някъде (в моя случай от emule-security), който се разархивира и се бута където трябва. Филтърът също е нещо като маската по време на COVID – не те предпазва изцяло, но поне ти е мирно на сърцето. Майтапът настрана, IPfilter-ите държат база с гадни адреси на държавни институции, honeypot-ове и т.н., с които не би искал да правиш UDP връзка.
Понеже забелязах малко проблематичности със SSD-та, също е хубаво от Advanced настройките на uTorrent да спреш diskio.use_partfile и да пуснеш diskio.sparse_files, иначе често ще ти хвърля Disk 100% грешки или каквито там бяха. Долу ще приложа и скриптчето, в случай че някой го иска.
@echo off
bitsadmin.exe /transfer “uTorrentIPFilter” /priority foreground http://upd.emule-security.org/ipfilter.zip %APPDATA%\utorrent\ipfilter.zipsetlocal
cd /d %~dp0
Call :UnZipFile “%APPDATA%\utorrent” “%APPDATA%\utorrent\ipfilter.zip”
exit /b:UnZipFile <ExtractTo> <newzipfile>
set vbs=”%temp%\_.vbs”
if exist %vbs% del /f /q %vbs%
>%vbs% echo Set fso = CreateObject(“Scripting.FileSystemObject”)
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject(“Shell.Application”)
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%del %appdata%\utorrent\ipfilter.dat
ren %appdata%\utorrent\guarding.p2p ipfilter.dat
del %appdata%\utorrent\ipfilter.zip