Hey folks, I know we like encoding urls with base64 to keep the automated bots off our hindquarters, I figured out a neat little trick. As I’m sure you are aware, you can share a torrent with the infohash only, without the need to have all the formatting of a magnet link.
The infohash is a 20 byte string represented with hexadecimal, and can be stored as both its ascii string or as just bytes. The interesting thing about base64 is that not only can it be used to encode an ascii string, it can also be used to encode bytes.
As an example, I’m going to use an archive.org torrent, using cryptii.com as the translator, since it allows me to encode bytes.
So, we start with our infohash 62ae55f2329e29f79a8d1ed245c84818b5cf84e9
and we’re going to set cryptii to encode to base64, with our input view set to bytes grouped by ‘none’. Out of this, we get Yq5V8jKeKfeajR7SRchIGLXPhOk=
Simply mirror the process for decoding.
This produces a base64 string which is actually shorter than the original infohash! This process always seems to produce the = at the end, which does make this unmistakably base64, but if encoded with the base64url standard this will disappear.
I thought this would probably be useful for the future when infohashes get shared on here, just in case automated bots start looking for infohash sized hexadecimal length strings.
Note this is currently optional according to the admin. Torrent links/hashes are fine to post here. See earlier discussion that
Oh sweet.
Note that v1 and v2 torrents use slightly different url fragments, so this won’t work quite as easily as you think. It would be possible tell the difference because they use different hashes with different lengths, but most people probably won’t know.
You make a good point, but I don’t think I’ve ever seen a v2 torrent in my life.
That’s an interesting idea, but what if magnet link parts were added as well? For example trackers, like [email protected] suggested, could be added like in a base64 string (
infohash
+tracker URLs
).I also made a page that converts infohashes to base64, like in your post. https://magmaus3.codeberg.page/infohash2base64
That script makes this a lot more convenient, thank you. As far as adding trackers, I’m not sure if there would be a way to compress them, which is what I was going for with the infohash encoding. If you try to encode a whole magnet link in base64, it ends up being a mile long with all the trackers added in (most of which do not connect). You could just encode the infohash of the magnet, but thats going to kind of defeat the point and confuse people. I don’t notice a difference most of the time with or without trackers, but if you need them, you can set qbittorrent to automatically appened trackers to torrents.
Nice tip, though don’t forget to share some trackers too, I’ve been stuck at 0% on a torrent someone shared as only the infohash. I’m guessing their DHT isn’t working, and despite adding trackers, without knowing what trackers any of the other seeds are using it’s just a guessing game adding open trackers blindly, or a waiting game hoping I can find peers using DHT.