{"id":26128984,"url":"https://github.com/bosniankicks/kurva-krome","last_synced_at":"2026-03-04T11:02:53.987Z","repository":{"id":255746727,"uuid":"853530140","full_name":"bosniankicks/Kurva-Krome","owner":"bosniankicks","description":"JS Undetected Web Automation","archived":false,"fork":false,"pushed_at":"2025-04-10T23:32:02.000Z","size":72,"stargazers_count":92,"open_issues_count":0,"forks_count":11,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-26T02:02:05.451Z","etag":null,"topics":["akamai","automation","browser","cf","cloudflare","datadome","fingerprint","fpjs","im","imperva","incapsula","javascript","javascript-library","kasada","puppeteer","selenium","undetected","web","webautomation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bosniankicks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-09-06T20:58:55.000Z","updated_at":"2025-06-14T08:19:59.000Z","dependencies_parsed_at":"2024-09-18T09:33:13.611Z","dependency_job_id":"29dbc814-e7d1-4342-b9e2-3ebcc68a8fcd","html_url":"https://github.com/bosniankicks/Kurva-Krome","commit_stats":null,"previous_names":["bosniankicks/kurva-krome"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bosniankicks/Kurva-Krome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosniankicks%2FKurva-Krome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosniankicks%2FKurva-Krome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosniankicks%2FKurva-Krome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosniankicks%2FKurva-Krome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bosniankicks","download_url":"https://codeload.github.com/bosniankicks/Kurva-Krome/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bosniankicks%2FKurva-Krome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078415,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["akamai","automation","browser","cf","cloudflare","datadome","fingerprint","fpjs","im","imperva","incapsula","javascript","javascript-library","kasada","puppeteer","selenium","undetected","web","webautomation"],"created_at":"2025-03-10T19:29:45.240Z","updated_at":"2026-03-04T11:02:53.942Z","avatar_url":"https://github.com/bosniankicks.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Hi, My name is Amel. I love automation frameworks. \n\nHow does KURVA-KROME work? \n\nKURVA-KROME works with custom CDP connections and the functionality of playwright and selenium. KK currently passes Akamai, Kasada, Cloudflare, Datadome, and PerimeterX in a headful environment. \n\n\nWhy did I make this? I noticed that driverless/nodriver is strictly written in Python, and I wanted to offer a way for NodeJS developers to have access to a undetected browser framework. Kurva-Krome uses playwright and selenium functionality and will be getting updates as the time goes on. \n\nUsage is shown in scripts folder\n\n\n    const kurva = new Kurvaaa();\n    const browser = await kurva.browser(); -- starts the browser initialization\n\n    await browser.get(\"https://www.nike.com/login\"); -- gets the URL the user wants to visit\n\n    browser.stop() -- basically a sleep timer in ms\n\n    const inputElement = await browser.findElement(By.XPATH, xpath); -- selenium findelement functionality\n\n    click() -- clicks an xpath\n\n    await inputElement.sendKeys(inputText); -- sends input text to an input xpath element\n\n    await browser.coordClick(100, 100); -- sends clicks to x,y coords\n\n    const username = await browser.grabtxt(usernameClass, 'class'); -- grabs inner text of class name\n\n    await browser.insert_js(\n        `document.querySelector('a[href=\"/bosniankicks/Kurva-Krome\"]').innerText = 'amels example';` -- lets user execute raw javascript inside the browser\n        );\n\n    await browser.picture('creep.png'); -- takes a screenshot of the browser window (doesnt take fullscreenshots, and must put filename of screenshot! , saves locally to where the script is ran from) \n\n    await browser.cookies('mycookies.json'); -- saves cookies to a json file by the users request\n\n    await browser.holdclick(x,y, duration_in_ms) -- sends a hold click to a x, y coordinate and holds for the duration in ms for the click\n\n    await kurva.end(); -- closes the browser and session\n\n\n\nPLEASE EDIT THE CHROME BINARY LOCATION THAT FITS TO YOUR BROWSER (around line 433) (I run on MacOS)\n\nPLEASE Leave a star! I greatly appreciate the recognition\n\nif you want to donate to the cause -- venmo(bosniankicks) - cashapp($bosniankicks) -- helps me buy my redbulls needed for these projects xD\n\n\nDm me on discord @pickumaternu or join https://discord.gg/pCDsrSXQa9 for help :D\n\n\nI am not responsible how you use this code in any possible way. Please refrain from using it for any malicous intent! It ruins the experience for people who want a JS framework to work! \n\n# Capsolver Sponsor\n[![CapSolver Ads](https://github.com/user-attachments/assets/793acd61-2ad9-46cf-bdec-60a61be962e1)](https://www.capsolver.com/?utm_source=github\u0026utm_medium=repo\u0026utm_campaign=scraping\u0026utm_term=Kurva-Krome)\n\nAlternatively, you may use Capsolver. For more information and to get started, visit the official [Capsolver website](https://www.capsolver.com/?utm_source=github\u0026utm_medium=repo\u0026utm_campaign=scraping\u0026utm_term=Kurva-Krome).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbosniankicks%2Fkurva-krome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbosniankicks%2Fkurva-krome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbosniankicks%2Fkurva-krome/lists"}