{"id":48542206,"url":"https://github.com/gnh1201/neverlost","last_synced_at":"2026-04-08T05:02:44.754Z","repository":{"id":340885078,"uuid":"1166460159","full_name":"gnh1201/neverlost","owner":"gnh1201","description":"A universal user tracking tool that can be used across various customer support scenarios.","archived":false,"fork":false,"pushed_at":"2026-03-09T01:32:17.000Z","size":136,"stargazers_count":25,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-09T06:47:45.354Z","etag":null,"topics":["naver","naver-blog","naver-cafe","tracking-api","user-tracking"],"latest_commit_sha":null,"homepage":"https://catswords.social/@catswords_oss","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnh1201.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-25T08:47:40.000Z","updated_at":"2026-03-09T01:32:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gnh1201/neverlost","commit_stats":null,"previous_names":["gnh1201/neverlost"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gnh1201/neverlost","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fneverlost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fneverlost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fneverlost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fneverlost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnh1201","download_url":"https://codeload.github.com/gnh1201/neverlost/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnh1201%2Fneverlost/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31540828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["naver","naver-blog","naver-cafe","tracking-api","user-tracking"],"created_at":"2026-04-08T05:02:32.171Z","updated_at":"2026-04-08T05:02:44.747Z","avatar_url":"https://github.com/gnh1201.png","language":"TypeScript","readme":"# neverlost\n\n[![Discord chat](https://img.shields.io/discord/359930650330923008?logo=discord)](https://discord.gg/exPsSYpQfJ?utm_source=catswords)\n\nA universal user tracking tool that can be used across various customer support scenarios.\n\n[English](README.md) | [한국어](README_KO.md)\n\n## Background\n\nOriginally implemented in 2020 and ported to Cloudflare Workers in February 2026, it has been expanded into a more versatile and broadly compatible user tracking tool. The following technologies are used:\n\n* Cloudflare Workers (Serverless)\n* Cloudflare D1 (Database)\n* Cloudflare R2 (Object Storage)\n\nThe service is already deployed, so you can test it immediately using the `client.py` file without any additional installation process.\n\n## How to Use\n\n### Installation\n\nCopy the tag below and paste it anywhere inside your HTML document.\n\n```html\n\u003cdiv style=\"margin: 10px auto; width: 32px; height: 32px; background: url(https://neverlost.catswords.org/marker/anonymous.png) no-repeat;\" /\u003e\n```\n\nThe filename without the extension (e.g., `anonymous`) becomes the tracking code.\n\nYou may replace it with other tags such as `img` if preferred.\n\n---\n\n### Checking Results\n\nRun the `client.py` file and enter the tracking code (e.g., `anonymous`) to retrieve the results.\n\n```cmd\n\u003epython client.py\nEnter code (required): anonymous\n\n=== Log Count ===\n{\n  \"ok\": true,\n  \"code\": \"anonymous\",\n  \"count\": 1\n}\n\n=== Recent Logs ===\n{\n  \"ok\": true,\n  \"code\": \"anonymous\",\n  \"limit\": 100,\n  \"offset\": 0,\n  \"count\": 1,\n  \"items\": [\n    {\n      \"id\": 16,\n      \"ts_iso\": \"\u003cdeducted\u003e\",\n      \"ts_ms\": \"\u003cdeducted\u003e\",\n      \"method\": \"GET\",\n      \"url\": \"https://neverlost.catswords.org/marker/anonymous.png\",\n      \"pathname\": \"/marker/anonymous.png\",\n      \"code\": \"anonymous\",\n      \"ext\": \"png\",\n      \"client_ip\": \"\u003cdeducted\u003e\",\n      \"client_ip_hash\": \"\u003cdeducted\u003e\",\n      \"country\": \"KR\",\n      \"colo\": \"NRT\",\n      \"asn\": 9318,\n      \"city\": \"Seoul\",\n      \"region\": \"Seoul\",\n      \"timezone\": \"Asia/Seoul\",\n      \"http_protocol\": \"HTTP/3\",\n      \"tls_version\": \"TLSv1.3\",\n      \"user_agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36 Edg/145.0.0.0\",\n      \"accept_language\": \"ko,en;q=0.9,en-US;q=0.8\",\n      \"referer\": null,\n      \"cf_json\": \"{\\\"httpProtocol\\\":\\\"HTTP/3\\\",\\\"clientAcceptEncoding\\\":\\\"gzip, deflate, br\\\",\\\"requestPriority\\\":\\\"\\\",\\\"edgeRequestKeepAliveStatus\\\":1,\\\"requestHeaderNames\\\":{},\\\"clientTcpRtt\\\":0,\\\"colo\\\":\\\"NRT\\\",\\\"asn\\\":9318,\\\"asOrganization\\\":\\\"\u003cdeducted\u003e\\\",\\\"country\\\":\\\"KR\\\",\\\"isEUCountry\\\":false,\\\"city\\\":\\\"Seoul\\\",\\\"continent\\\":\\\"AS\\\",\\\"region\\\":\\\"Seoul\\\",\\\"regionCode\\\":\\\"11\\\",\\\"timezone\\\":\\\"Asia/Seoul\\\",\\\"longitude\\\":\\\"\u003cdeducted\u003e\\\",\\\"latitude\\\":\\\"\u003cdeducted\u003e\\\",\\\"postalCode\\\":\\\"\u003cdeducted\u003e\\\",\\\"tlsVersion\\\":\\\"TLSv1.3\\\",\\\"tlsCipher\\\":\\\"AEAD-AES128-GCM-SHA256\\\",\\\"tlsClientRandom\\\":\\\"RZ6UiO0URug6YOABWyoxmU2Pq7xYrXTrKmoeOy2gT2A=\\\",\\\"tlsClientCiphersSha1\\\":\\\"3HTt3+R/6BL3zeALJDSq0pR1yOQ=\\\",\\\"tlsClientExtensionsSha1\\\":\\\"qtcZWa2tbiHlVolyrp1/rLClHAU=\\\",\\\"tlsClientExtensionsSha1Le\\\":\\\"\\\",\\\"tlsClientHelloLength\\\":\\\"1755\\\",\\\"tlsClientAuth\\\":{\\\"certPresented\\\":\\\"0\\\",\\\"certVerified\\\":\\\"NONE\\\",\\\"certRevoked\\\":\\\"0\\\",\\\"certIssuerDN\\\":\\\"\\\",\\\"certSubjectDN\\\":\\\"\\\",\\\"certIssuerDNRFC2253\\\":\\\"\\\",\\\"certSubjectDNRFC2253\\\":\\\"\\\",\\\"certIssuerDNLegacy\\\":\\\"\\\",\\\"certSubjectDNLegacy\\\":\\\"\\\",\\\"certSerial\\\":\\\"\\\",\\\"certIssuerSerial\\\":\\\"\\\",\\\"certSKI\\\":\\\"\\\",\\\"certIssuerSKI\\\":\\\"\\\",\\\"certFingerprintSHA1\\\":\\\"\\\",\\\"certFingerprintSHA256\\\":\\\"\\\",\\\"certNotBefore\\\":\\\"\\\",\\\"certNotAfter\\\":\\\"\\\"},\\\"verifiedBotCategory\\\":\\\"\\\"}\",\n      \"upstream_url\": \"\u003cdeducted\u003e\",\n      \"upstream_ok\": 1,\n      \"upstream_status\": 200,\n      \"upstream_error\": null\n    }\n  ]\n}\n```\n\n## Using It on the blogs\n\n### Using the Custom Widget\n\nYou can insert the tracking code using the custom widget.\n\n\u003cimg width=\"1090\" height=\"963\" alt=\"image\" src=\"https://github.com/user-attachments/assets/d4dc5156-6019-4b49-8f3a-7047d7eb55ac\" /\u003e\n\n---\n\nAfter installation, a stamp-style image will appear as shown below, allowing you to track the visitor’s real external IP and web browser information.\n\n\u003cimg width=\"234\" height=\"161\" alt=\"image\" src=\"https://github.com/user-attachments/assets/ae0f6262-875a-493f-ab76-c9f6a31120fa\" /\u003e\n\n## Using It on the forums\n\n### Using the WYSIWYG editor\n\nYou can insert the tracking code using the HTML editing feature of the WYSIWYG editor.\n\n\u003cimg width=\"978\" height=\"772\" alt=\"image\" src=\"https://github.com/user-attachments/assets/1fff3b03-527e-4cd6-91ca-1f674e8b5769\" /\u003e\n\n---\n\nAfter installation, a stamp-style image will appear as shown below, allowing you to track the visitor’s real external IP and web browser information.\n\n\u003cimg width=\"761\" height=\"159\" alt=\"image\" src=\"https://github.com/user-attachments/assets/dfe30cac-c484-470e-b0c2-c8f70f5261c9\" /\u003e\n\n## Notes\n\nThis content does not involve exploiting any vulnerabilities.\nIn cases used as examples, the related service providers have confirmed that the behavior is a feature, not a bug.\n\n## Contact\n* oss@catswords.re.kr\n* https://discord.com/invite/exPsSYpQfJ\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnh1201%2Fneverlost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnh1201%2Fneverlost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnh1201%2Fneverlost/lists"}