Improve client identification based on BEP 10
Review Request #130077 - Created April 10, 2017 and updated
Identify clients more accurately using the 'v' string embedded in extended handshake messages as described by BitTorrent Enhancement Proposal 10 'Extension Protocol' (BEP 10).
My tests showed that:
- most peers/clients send the string
- most peers/clients send useful/compliant string content
- clients are identified even if PeerID::identifyClient() fails to do so (e.g. 'Unknown client' -> 'Tixati')
- client identification becomes more accurate (e.g. 'Azureus 5.7.x.x' -> 'Vuze 5.7.x.x')
Here's a screenshot comparing identification methods. Format of column 'Client': v-string-based identification, peer-id-based identification, peer id.