BiglySoftware / BiglyBT

Feature-filled Bittorrent client based on the Azureus open source project
https://www.biglybt.com
GNU General Public License v2.0
1.53k stars 152 forks source link

client ID & peer ID backlist/whitelist #1583

Closed santost12 closed 3 years ago

santost12 commented 4 years ago

I would like to suggest the ability to blacklist certain peer IDs and client IDs. Tixati is a BitTorrent client that already supports this really well. It supports filtering based on client ID and peer ID. You can choose to always allow, never allow or only allow. I would like to see BiglyBT take this a step forward and also allow more advanced filtering.

basic filtering examples:

IF client_ID = "-XL*" THEN block all incoming/outgoing. (never allow)

IF client_ID = "-XL0012-*" THEN block all incoming/outgoing. (never allow but for a specific version)

IF client_ID = "-XL0011-*" THEN accept all incoming/outgoing. (allow a specific version but deny everything else. Could be useful for a swarm friendly version. If a non leech only version existed.)

IF peer_ID = "Xunlei*" THEN block all incoming/outgoing. (never allow)

advanced filtering example:

IF client_country = "China" AND IF client_remote_port="65000" AND IF peer_ID = "Transmission*" THEN block all incoming/outgoing. (never allow)

This advanced filter example is for a download manager that masks itself as Transmission and never seeds back. This kind of advanced filter is better than banning every China IP.

I would really like to see this feature get added. Before the user enables this feature they should be required to switch to advanced mode and a warning should be given to be very careful with filters.

Havokdan commented 4 years ago

BiglyBT already bans ips that send bad data, right? I don't see why banning client and/or country as a reasonable measure, but I am a simple user like you. Unless there is some compelling evidence that these customers behave outside the limits of the protocol.

santost12 commented 4 years ago

Yes but I don't think Xunlei sends any bad data. It incorrectly reports its download progress. It downloads without seeding anything back. I don't ban any entire country but I wouldn't be surprised if anyone else does this just to block Xunlei. The advanced filter example is for a leecher client that always uses a certain port and peer ID.

parg commented 4 years ago

Check out 'Peer Sets' - https://github.com/BiglySoftware/BiglyBT/wiki/Tags#Peer_Sets

bloatmode commented 2 years ago

I'm using peer sets to limit upload to TorrentStorm clients, who seem to be all leechers who sequentially download torrents, I'm guessing it's some torrent-based movie streaming platform because that client hasn't been developed for more than a decade. This is the string I'm using:

peer_set TorrentStormLeechers=all,client=TorrentStorm*,up=1

I tried setting up=0 but that would just make it unlimited. The issue is that TorrentStorm clients would still show up in my peers and maintain active connections. After right-clicking "TorrentStormLeechers" in the left side bar and enabling "Execute On Assign" > "Disconnect" they don't seem to remain connected for more than 20 seconds.

I wanted to share this just in case somebody ends up on this issue because of my same problem.

Havokdan commented 2 years ago

I use:

#peer_set Leechers=Public;I2P;Tor,client=(?i)(xunlei|torrentstorm|bitcomet|webtorrent|frostwire|flashget|torch|mediaget|bitlord|unknown|^ttorrent|µTorrent 6.*?|µTorrent 5.*?|µTorrent 4.*?|libtorrent.*?|Desconhecido.*?|Mainline.*?)

bloatmode commented 2 years ago

@Havokdan do you terminate their connection in any way or just limit upload? Would it be possible to also ban them automatically?

Havokdan commented 2 years ago

@Havokdan do you terminate their connection in any way or just limit upload? Would it be possible to also ban them automatically?

Sometimes, to find out if they're circling me, I just turn off uploading for them, there's a right-click option under the label that does that, but generally I use the disconnect option.

bloatmode commented 2 years ago

@Havokdan sorry for bothering you again but what does ^ttorrent match? I've noticed that it (rightfully) doesn't match qbittorrent.

Havokdan commented 2 years ago

@Havokdan sorry for bothering you again but what does ^ttorrent match? I've noticed that it (rightfully) doesn't match qbittorrent.

This I got from biglybt chat, but it looks like the name of an android torrent client.

parg commented 2 years ago

See https://github.com/BiglySoftware/BiglyBT/wiki/Regular-Expressions

the "^" character means "starts with" - so that that expression matches "ttorrent" but not "bittorrent"

bloatmode commented 2 years ago

@Havokdan I noticed that without up=1 my client will upload to TorrentStorm clients at full speed for about 20 seconds, until they get automatically disconnected