Calculate Heybox URL Hash
Heybox is a famous Chinese gamer community. There are lots of useful articles and game reviews on this site. To protect their valuable assets, Heybox uses relatively complex anti-crawler algorithm to sign every request. They really do a great job on this algorithm, so I spend some time to study how it works and publish this package as a way to share my learnings to everyone.
In this package, only hkey
hash algorithm is published by calculate(url)
. It's not enough to use this hash to fetch any Heybox's API, which requires more hashes and per-request nonce for every API call. So I think it may be OK to make this package public available on NPM.
To Heybox dev team: If my understanding is not true, please contact me by opening new issues in this project and let me know your concern.
Usage
To add hkey
on a url, call calculate(url)
.
import { calculate } from 'heybox-url';
const url = calculate('https://api.xiaoheihe.cn/foo/bar?k1=v1&k2=v2');
url === 'https://api.xiaoheihe.cn/foo/bar?k1=v1&k2=v2&hkey=KM6MP94&_time=1693395090';
API
const enum HKeyAlgorithm {
Plain = 'plain',
Web = 'web',
Android = 'android',
}
interface HKeyOptions {
timestamp?: number;
nonce?: string;
algorithm?: HKeyAlgorithm;
}
export declare function calculate(url: string, options?: HKeyOptions): string;
License
MIT