Skip to content

Instantly share code, notes, and snippets.

@DavidBuchanan314
DavidBuchanan314 / r1_api.md
Last active June 15, 2024 15:34
Rabbit R1 Unofficial API Docs

The Rabbit R1 uses a few custom APIs to talk to The Cloud™. Almost nothing happens on-device, and all the AI magic happens on servers.

Consequently, you don't really need the physical device.

TLS Client Fingerprinting

In lieu of an authentication scheme, Rabbit's servers attempt to verify device authenticity by checking the TLS client's JA3 fingerprint, presumably enforced by AWS WAF.

If your TLS client doesn't match an expected fingerprint, you'll get HTTP 403 errors. This fingerprint works:

Arkose Mobile Info

TL;DR:

  1. Collect Android environment information + (string escape + base64 encode)
  2. Send data to fingerprintData function in WebView via WebView.evaluateJavascript
  3. Forward data sent into the WebView to arkoseEnforcement.dataResponse(dataCollection) in the JavaScript api.js
  4. Emit the event from api.js to enforcement.version_hash.js

Le.emit("data_response", {message: "data_response", data: eventData, key: Jt.config.publicKey});

@AzureFlow
AzureFlow / Colors.php
Created January 23, 2021 06:43
Easy way to apply colors to console output in PHP
<?php
class Colors
{
public static function getRich(string $string, string $foregroundColor = null, string $backgroundColor = null): string
{
$coloredString = '';
if(!empty($foregroundColor))
{
@MeguminSama
MeguminSama / Discord Experiments.js
Last active June 7, 2024 14:14
Discord Experiments.js
let cache; webpackChunkdiscord_app.push([["wp_isdev_patch"], {}, r => cache=r.c]);
var UserStore = Object.values(cache).find(m => m?.exports?.default?.getUser).exports.default;
var actions = Object.values(UserStore._dispatcher._actionHandlers._dependencyGraph.nodes);
var user = UserStore.getCurrentUser();
actions.find(n => n.name === "ExperimentStore").actionHandler.CONNECTION_OPEN({
type: "CONNECTION_OPEN", user: {flags: user.flags |= 1}, experiments: [],
});
actions.find(n => n.name === "DeveloperExperimentStore").actionHandler.CONNECTION_OPEN();
webpackChunkdiscord_app.pop(); user.flags &= ~1; "done";