Download chatgpt/proofofWork.py from deeme/c2a: direct link, hf CLI and curl.
- Browser
- Download file 15.4 kB
-
https://huggingface.co/spaces/deeme/c2a/resolve/main/chatgpt/proofofWork.py
- Command line
-
hf download hf://spaces/deeme/c2a/chatgpt/proofofWork.py
-
curl -L -o proofofWork.py https://huggingface.co/spaces/deeme/c2a/resolve/main/chatgpt/proofofWork.py
15.4 kB
| import hashlib | |
| import json | |
| import random | |
| import re | |
| import time | |
| import uuid | |
| from datetime import datetime, timedelta, timezone | |
| from html.parser import HTMLParser | |
| import pybase64 | |
| import diskcache as dc | |
| from utils.Logger import logger | |
| from utils.configs import conversation_only | |
| cores = [8, 16, 24, 32] | |
| timeLayout = "%a %b %d %Y %H:%M:%S" | |
| cache = dc.Cache('./data/pow_config_cache') | |
| cached_scripts = [] | |
| cached_dpl = "" | |
| cached_time = 0 | |
| cached_require_proof = "" | |
| navigator_key = [ | |
| "registerProtocolHandler−function registerProtocolHandler() { [native code] }", | |
| "storage−[object StorageManager]", | |
| "locks−[object LockManager]", | |
| "appCodeName−Mozilla", | |
| "permissions−[object Permissions]", | |
| "share−function share() { [native code] }", | |
| "webdriver−false", | |
| "managed−[object NavigatorManagedData]", | |
| "canShare−function canShare() { [native code] }", | |
| "vendor−Google Inc.", | |
| "vendor−Google Inc.", | |
| "mediaDevices−[object MediaDevices]", | |
| "vibrate−function vibrate() { [native code] }", | |
| "storageBuckets−[object StorageBucketManager]", | |
| "mediaCapabilities−[object MediaCapabilities]", | |
| "getGamepads−function getGamepads() { [native code] }", | |
| "bluetooth−[object Bluetooth]", | |
| "share−function share() { [native code] }", | |
| "cookieEnabled−true", | |
| "virtualKeyboard−[object VirtualKeyboard]", | |
| "product−Gecko", | |
| "mediaDevices−[object MediaDevices]", | |
| "canShare−function canShare() { [native code] }", | |
| "getGamepads−function getGamepads() { [native code] }", | |
| "product−Gecko", | |
| "xr−[object XRSystem]", | |
| "clipboard−[object Clipboard]", | |
| "storageBuckets−[object StorageBucketManager]", | |
| "unregisterProtocolHandler−function unregisterProtocolHandler() { [native code] }", | |
| "productSub−20030107", | |
| "login−[object NavigatorLogin]", | |
| "vendorSub−", | |
| "login−[object NavigatorLogin]", | |
| "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", | |
| "mediaDevices−[object MediaDevices]", | |
| "locks−[object LockManager]", | |
| "webkitGetUserMedia−function webkitGetUserMedia() { [native code] }", | |
| "vendor−Google Inc.", | |
| "xr−[object XRSystem]", | |
| "mediaDevices−[object MediaDevices]", | |
| "virtualKeyboard−[object VirtualKeyboard]", | |
| "virtualKeyboard−[object VirtualKeyboard]", | |
| "appName−Netscape", | |
| "storageBuckets−[object StorageBucketManager]", | |
| "presentation−[object Presentation]", | |
| "onLine−true", | |
| "mimeTypes−[object MimeTypeArray]", | |
| "credentials−[object CredentialsContainer]", | |
| "presentation−[object Presentation]", | |
| "getGamepads−function getGamepads() { [native code] }", | |
| "vendorSub−", | |
| "virtualKeyboard−[object VirtualKeyboard]", | |
| "serviceWorker−[object ServiceWorkerContainer]", | |
| "xr−[object XRSystem]", | |
| "product−Gecko", | |
| "keyboard−[object Keyboard]", | |
| "gpu−[object GPU]", | |
| "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", | |
| "webkitPersistentStorage−[object DeprecatedStorageQuota]", | |
| "doNotTrack", | |
| "clearAppBadge−function clearAppBadge() { [native code] }", | |
| "presentation−[object Presentation]", | |
| "serial−[object Serial]", | |
| "locks−[object LockManager]", | |
| "requestMIDIAccess−function requestMIDIAccess() { [native code] }", | |
| "locks−[object LockManager]", | |
| "requestMediaKeySystemAccess−function requestMediaKeySystemAccess() { [native code] }", | |
| "vendor−Google Inc.", | |
| "pdfViewerEnabled−true", | |
| "language−zh-CN", | |
| "setAppBadge−function setAppBadge() { [native code] }", | |
| "geolocation−[object Geolocation]", | |
| "userAgentData−[object NavigatorUAData]", | |
| "mediaCapabilities−[object MediaCapabilities]", | |
| "requestMIDIAccess−function requestMIDIAccess() { [native code] }", | |
| "getUserMedia−function getUserMedia() { [native code] }", | |
| "mediaDevices−[object MediaDevices]", | |
| "webkitPersistentStorage−[object DeprecatedStorageQuota]", | |
| "sendBeacon−function sendBeacon() { [native code] }", | |
| "hardwareConcurrency−32", | |
| "credentials−[object CredentialsContainer]", | |
| "storage−[object StorageManager]", | |
| "cookieEnabled−true", | |
| "pdfViewerEnabled−true", | |
| "windowControlsOverlay−[object WindowControlsOverlay]", | |
| "scheduling−[object Scheduling]", | |
| "pdfViewerEnabled−true", | |
| "hardwareConcurrency−32", | |
| "xr−[object XRSystem]", | |
| "webdriver−false", | |
| "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", | |
| "getInstalledRelatedApps−function getInstalledRelatedApps() { [native code] }", | |
| "bluetooth−[object Bluetooth]" | |
| ] | |
| document_key = ['_reactListeningo743lnnpvdg', 'location'] | |
| window_key = [ | |
| "0", | |
| "window", | |
| "self", | |
| "document", | |
| "name", | |
| "location", | |
| "customElements", | |
| "history", | |
| "navigation", | |
| "locationbar", | |
| "menubar", | |
| "personalbar", | |
| "scrollbars", | |
| "statusbar", | |
| "toolbar", | |
| "status", | |
| "closed", | |
| "frames", | |
| "length", | |
| "top", | |
| "opener", | |
| "parent", | |
| "frameElement", | |
| "navigator", | |
| "origin", | |
| "external", | |
| "screen", | |
| "innerWidth", | |
| "innerHeight", | |
| "scrollX", | |
| "pageXOffset", | |
| "scrollY", | |
| "pageYOffset", | |
| "visualViewport", | |
| "screenX", | |
| "screenY", | |
| "outerWidth", | |
| "outerHeight", | |
| "devicePixelRatio", | |
| "clientInformation", | |
| "screenLeft", | |
| "screenTop", | |
| "styleMedia", | |
| "onsearch", | |
| "isSecureContext", | |
| "trustedTypes", | |
| "performance", | |
| "onappinstalled", | |
| "onbeforeinstallprompt", | |
| "crypto", | |
| "indexedDB", | |
| "sessionStorage", | |
| "localStorage", | |
| "onbeforexrselect", | |
| "onabort", | |
| "onbeforeinput", | |
| "onbeforematch", | |
| "onbeforetoggle", | |
| "onblur", | |
| "oncancel", | |
| "oncanplay", | |
| "oncanplaythrough", | |
| "onchange", | |
| "onclick", | |
| "onclose", | |
| "oncontentvisibilityautostatechange", | |
| "oncontextlost", | |
| "oncontextmenu", | |
| "oncontextrestored", | |
| "oncuechange", | |
| "ondblclick", | |
| "ondrag", | |
| "ondragend", | |
| "ondragenter", | |
| "ondragleave", | |
| "ondragover", | |
| "ondragstart", | |
| "ondrop", | |
| "ondurationchange", | |
| "onemptied", | |
| "onended", | |
| "onerror", | |
| "onfocus", | |
| "onformdata", | |
| "oninput", | |
| "oninvalid", | |
| "onkeydown", | |
| "onkeypress", | |
| "onkeyup", | |
| "onload", | |
| "onloadeddata", | |
| "onloadedmetadata", | |
| "onloadstart", | |
| "onmousedown", | |
| "onmouseenter", | |
| "onmouseleave", | |
| "onmousemove", | |
| "onmouseout", | |
| "onmouseover", | |
| "onmouseup", | |
| "onmousewheel", | |
| "onpause", | |
| "onplay", | |
| "onplaying", | |
| "onprogress", | |
| "onratechange", | |
| "onreset", | |
| "onresize", | |
| "onscroll", | |
| "onsecuritypolicyviolation", | |
| "onseeked", | |
| "onseeking", | |
| "onselect", | |
| "onslotchange", | |
| "onstalled", | |
| "onsubmit", | |
| "onsuspend", | |
| "ontimeupdate", | |
| "ontoggle", | |
| "onvolumechange", | |
| "onwaiting", | |
| "onwebkitanimationend", | |
| "onwebkitanimationiteration", | |
| "onwebkitanimationstart", | |
| "onwebkittransitionend", | |
| "onwheel", | |
| "onauxclick", | |
| "ongotpointercapture", | |
| "onlostpointercapture", | |
| "onpointerdown", | |
| "onpointermove", | |
| "onpointerrawupdate", | |
| "onpointerup", | |
| "onpointercancel", | |
| "onpointerover", | |
| "onpointerout", | |
| "onpointerenter", | |
| "onpointerleave", | |
| "onselectstart", | |
| "onselectionchange", | |
| "onanimationend", | |
| "onanimationiteration", | |
| "onanimationstart", | |
| "ontransitionrun", | |
| "ontransitionstart", | |
| "ontransitionend", | |
| "ontransitioncancel", | |
| "onafterprint", | |
| "onbeforeprint", | |
| "onbeforeunload", | |
| "onhashchange", | |
| "onlanguagechange", | |
| "onmessage", | |
| "onmessageerror", | |
| "onoffline", | |
| "ononline", | |
| "onpagehide", | |
| "onpageshow", | |
| "onpopstate", | |
| "onrejectionhandled", | |
| "onstorage", | |
| "onunhandledrejection", | |
| "onunload", | |
| "crossOriginIsolated", | |
| "scheduler", | |
| "alert", | |
| "atob", | |
| "blur", | |
| "btoa", | |
| "cancelAnimationFrame", | |
| "cancelIdleCallback", | |
| "captureEvents", | |
| "clearInterval", | |
| "clearTimeout", | |
| "close", | |
| "confirm", | |
| "createImageBitmap", | |
| "fetch", | |
| "find", | |
| "focus", | |
| "getComputedStyle", | |
| "getSelection", | |
| "matchMedia", | |
| "moveBy", | |
| "moveTo", | |
| "open", | |
| "postMessage", | |
| "print", | |
| "prompt", | |
| "queueMicrotask", | |
| "releaseEvents", | |
| "reportError", | |
| "requestAnimationFrame", | |
| "requestIdleCallback", | |
| "resizeBy", | |
| "resizeTo", | |
| "scroll", | |
| "scrollBy", | |
| "scrollTo", | |
| "setInterval", | |
| "setTimeout", | |
| "stop", | |
| "structuredClone", | |
| "webkitCancelAnimationFrame", | |
| "webkitRequestAnimationFrame", | |
| "chrome", | |
| "caches", | |
| "cookieStore", | |
| "ondevicemotion", | |
| "ondeviceorientation", | |
| "ondeviceorientationabsolute", | |
| "launchQueue", | |
| "documentPictureInPicture", | |
| "getScreenDetails", | |
| "queryLocalFonts", | |
| "showDirectoryPicker", | |
| "showOpenFilePicker", | |
| "showSaveFilePicker", | |
| "originAgentCluster", | |
| "onpageswap", | |
| "onpagereveal", | |
| "credentialless", | |
| "speechSynthesis", | |
| "onscrollend", | |
| "webkitRequestFileSystem", | |
| "webkitResolveLocalFileSystemURL", | |
| "sendMsgToSolverCS", | |
| "webpackChunk_N_E", | |
| "__next_set_public_path__", | |
| "next", | |
| "__NEXT_DATA__", | |
| "__SSG_MANIFEST_CB", | |
| "__NEXT_P", | |
| "_N_E", | |
| "regeneratorRuntime", | |
| "__REACT_INTL_CONTEXT__", | |
| "DD_RUM", | |
| "_", | |
| "filterCSS", | |
| "filterXSS", | |
| "__SEGMENT_INSPECTOR__", | |
| "__NEXT_PRELOADREADY", | |
| "Intercom", | |
| "__MIDDLEWARE_MATCHERS", | |
| "__STATSIG_SDK__", | |
| "__STATSIG_JS_SDK__", | |
| "__STATSIG_RERENDER_OVERRIDE__", | |
| "_oaiHandleSessionExpired", | |
| "__BUILD_MANIFEST", | |
| "__SSG_MANIFEST", | |
| "__intercomAssignLocation", | |
| "__intercomReloadLocation" | |
| ] | |
| class ScriptSrcParser(HTMLParser): | |
| def handle_starttag(self, tag, attrs): | |
| global cached_scripts, cached_dpl, cached_time | |
| if tag == "script": | |
| attrs_dict = dict(attrs) | |
| if "src" in attrs_dict: | |
| src = attrs_dict["src"] | |
| cached_scripts.append(src) | |
| match = re.search(r"c/[^/]*/_", src) | |
| if match: | |
| cached_dpl = match.group(0) | |
| cached_time = int(time.time()) | |
| def get_data_build_from_html(html_content): | |
| global cached_scripts, cached_dpl, cached_time | |
| parser = ScriptSrcParser() | |
| parser.feed(html_content) | |
| if not cached_scripts: | |
| cached_scripts.append("https://chatgpt.com/backend-api/sentinel/sdk.js") | |
| if not cached_dpl: | |
| match = re.search(r'<html[^>]*data-build="([^"]*)"', html_content) | |
| if match: | |
| data_build = match.group(1) | |
| cached_dpl = data_build | |
| cached_time = int(time.time()) | |
| logger.info(f"Found dpl: {cached_dpl}") | |
| async def get_dpl(service): | |
| global cached_scripts, cached_dpl, cached_time | |
| if int(time.time()) - cached_time < 15 * 60: | |
| return True | |
| headers = service.base_headers.copy() | |
| cached_scripts = [] | |
| cached_dpl = "" | |
| try: | |
| if conversation_only: | |
| return True | |
| r = await service.s.get(f"{service.host_url}/", headers=headers, timeout=5) | |
| r.raise_for_status() | |
| get_data_build_from_html(r.text) | |
| if not cached_dpl: | |
| raise Exception("No Cached DPL") | |
| else: | |
| return True | |
| except Exception as e: | |
| logger.info(f"Failed to get dpl: {e}") | |
| cached_dpl = None | |
| cached_time = int(time.time()) | |
| return False | |
| def get_parse_time(): | |
| now = datetime.now(timezone(timedelta(hours=-5))) | |
| return now.strftime(timeLayout) + " GMT-0500 (Eastern Standard Time)" | |
| def get_config(user_agent, req_token=None): | |
| config = [ | |
| random.choice([1920 + 1080, 2560 + 1440, 1920 + 1200, 2560 + 1600]), | |
| get_parse_time(), | |
| 4294705152, | |
| 0, | |
| user_agent, | |
| random.choice(cached_scripts) if cached_scripts else "", | |
| cached_dpl, | |
| "en-US", | |
| "en-US,es-US,en,es", | |
| 0, | |
| random.choice(navigator_key), | |
| random.choice(document_key), | |
| random.choice(window_key), | |
| time.perf_counter() * 1000, | |
| str(uuid.uuid4()), | |
| "", | |
| random.choice(cores), | |
| time.time() * 1000 - (time.perf_counter() * 1000), | |
| ] | |
| return config | |
| def get_answer_token(seed, diff, config): | |
| start = time.time() | |
| answer, solved = generate_answer(seed, diff, config) | |
| end = time.time() | |
| logger.info(f'diff: {diff}, time: {int((end - start) * 1e6) / 1e3}ms, solved: {solved}') | |
| return "gAAAAAB" + answer, solved | |
| def generate_answer(seed, diff, config): | |
| diff_len = len(diff) | |
| seed_encoded = seed.encode() | |
| static_config_part1 = (json.dumps(config[:3], separators=(',', ':'), ensure_ascii=False)[:-1] + ',').encode() | |
| static_config_part2 = (',' + json.dumps(config[4:9], separators=(',', ':'), ensure_ascii=False)[1:-1] + ',').encode() | |
| static_config_part3 = (',' + json.dumps(config[10:], separators=(',', ':'), ensure_ascii=False)[1:]).encode() | |
| target_diff = bytes.fromhex(diff) | |
| for i in range(500000): | |
| dynamic_json_i = str(i).encode() | |
| dynamic_json_j = str(i >> 1).encode() | |
| final_json_bytes = static_config_part1 + dynamic_json_i + static_config_part2 + dynamic_json_j + static_config_part3 | |
| base_encode = pybase64.b64encode(final_json_bytes) | |
| hash_value = hashlib.sha3_512(seed_encoded + base_encode).digest() | |
| if hash_value[:diff_len] <= target_diff: | |
| return base_encode.decode(), True | |
| return "wQ8Lk5FbGpA2NcR9dShT6gYjU7VxZ4D" + pybase64.b64encode(f'"{seed}"'.encode()).decode(), False | |
| def get_requirements_token(config): | |
| require, solved = generate_answer(format(random.random()), "0fffff", config) | |
| return 'gAAAAAC' + require | |
| if __name__ == "__main__": | |
| # cached_scripts.append( | |
| # "https://cdn.oaistatic.com/_next/static/cXh69klOLzS0Gy2joLDRS/_ssgManifest.js?dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3") | |
| # cached_dpl = "453ebaec0d44c2decab71692e1bfe39be35a24b3" | |
| # cached_time = int(time.time()) | |
| # for i in range(10): | |
| # seed = format(random.random()) | |
| # diff = "000032" | |
| # config = get_config("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome") | |
| # answer = get_answer_token(seed, diff, config) | |
| cached_scripts.append( | |
| "https://cdn.oaistatic.com/_next/static/cXh69klOLzS0Gy2joLDRS/_ssgManifest.js?dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3") | |
| cached_dpl = "prod-f501fe933b3edf57aea882da888e1a544df99840" | |
| config = get_config("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36") | |
| get_requirements_token(config) | |