[twitter:ctid] reduce chance of generating the same ID

Querying the same endpoint more than once per second could result in a
"404 Not Found" error if the same transaction ID is generated by
'random.randrange(256)' yielding the same result.

This commit tries to significantly reduce the chance of this happening
by incorporating the fractional part of the current timestamp into the
random number, making it only possible to generate the same ID for
one-sixteenth of a second.
This commit is contained in:
Mike Fährmann
2025-05-10 21:27:22 +02:00
parent 98fdcd4d72
commit d92bc06f90

View File

@@ -129,7 +129,9 @@ class ClientTransaction():
keyword="obfiowerehiring", rndnum=3):
bytes_key = self.key_bytes
now = int(time.time()) - 1682924400
nowf = time.time()
nowi = int(nowf)
now = nowi - 1682924400
bytes_time = (
(now ) & 0xFF, # noqa: E202
(now >> 8) & 0xFF, # noqa: E222
@@ -141,7 +143,7 @@ class ClientTransaction():
method, path, now, keyword, self.animation_key)
bytes_hash = hashlib.sha256(payload.encode()).digest()[:16]
num = random.randrange(256)
num = (random.randrange(16) << 4) + int((nowf - nowi) * 16.0)
result = bytes(
byte ^ num
for byte in itertools.chain(