https://github.com/bosniankicks/kurva-krome
JS Undetected Web Automation
https://github.com/bosniankicks/kurva-krome
akamai automation browser cf cloudflare datadome fingerprint fpjs im imperva incapsula javascript javascript-library kasada puppeteer selenium undetected web webautomation
Last synced: 11 days ago
JSON representation
JS Undetected Web Automation
- Host: GitHub
- URL: https://github.com/bosniankicks/kurva-krome
- Owner: bosniankicks
- Created: 2024-09-06T20:58:55.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-04-10T23:32:02.000Z (13 days ago)
- Last Synced: 2025-04-11T00:27:11.434Z (13 days ago)
- Topics: akamai, automation, browser, cf, cloudflare, datadome, fingerprint, fpjs, im, imperva, incapsula, javascript, javascript-library, kasada, puppeteer, selenium, undetected, web, webautomation
- Language: JavaScript
- Homepage:
- Size: 67.4 KB
- Stars: 83
- Watchers: 4
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Hi, My name is Amel. I love automation frameworks.
How does KURVA-KROME work?
KURVA-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.
Why 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.
Usage is shown in scripts folder
const kurva = new Kurvaaa();
const browser = await kurva.browser(); -- starts the browser initializationawait browser.get("https://www.nike.com/login"); -- gets the URL the user wants to visit
browser.stop() -- basically a sleep timer in ms
const inputElement = await browser.findElement(By.XPATH, xpath); -- selenium findelement functionality
click() -- clicks an xpath
await inputElement.sendKeys(inputText); -- sends input text to an input xpath element
await browser.coordClick(100, 100); -- sends clicks to x,y coords
const username = await browser.grabtxt(usernameClass, 'class'); -- grabs inner text of class name
await browser.insert_js(
`document.querySelector('a[href="/bosniankicks/Kurva-Krome"]').innerText = 'amels example';` -- lets user execute raw javascript inside the browser
);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)
await browser.cookies('mycookies.json'); -- saves cookies to a json file by the users request
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
await kurva.end(); -- closes the browser and session
PLEASE EDIT THE CHROME BINARY LOCATION THAT FITS TO YOUR BROWSER (around line 433) (I run on MacOS)
PLEASE Leave a star! I greatly appreciate the recognition
if you want to donate to the cause -- venmo(bosniankicks) - cashapp($bosniankicks) -- helps me buy my redbulls needed for these projects xD
Dm me on discord @pickumaternu or join https://discord.gg/pCDsrSXQa9 for help :D
I 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!
# Capsolver Sponsor
[](https://www.capsolver.com/?utm_source=github&utm_medium=repo&utm_campaign=scraping&utm_term=Kurva-Krome)Alternatively, you may use Capsolver. For more information and to get started, visit the official [Capsolver website](https://www.capsolver.com/?utm_source=github&utm_medium=repo&utm_campaign=scraping&utm_term=Kurva-Krome).