Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/wurde/hesitate

Human-like delay between page interactions.
https://github.com/wurde/hesitate

Last synced: 5 days ago
JSON representation

Human-like delay between page interactions.

Awesome Lists containing this project

README

        

# hesitate

Human-like delay between page interactions.

## Getting started

Add the package to your project using the npm ecosystem:

```bash
$ npm install hesitate --save
```

```javascript
"use strict"

/**
* Dependencies
*/

const pussy = require('pussy')
const puppeteer = require("puppeteer")
const hesitate = require("hesitate")

/**
* Initialize the bot.
*/

const query_bot = new pussy.Bot('query')

/**
* Initialize Action
*/

const query_action = new pussy.Action('query')

/**
* Define Action
*/

// Start browser.
query_action.activities[0] = async (args) => {
args.browser = await puppeteer.launch({ headless: false, timeout: 10000 })
args.page = await args.browser.newPage()
await args.page.setViewport({ width: 960, height: 824 })
return args
}

// Send query.
query_action.activities[1] = async (args) => {
await args.page.goto("https://www.google.com", { waitUntil: 'networkidle0' })
await hesitate(args.page) // hesitate a random number of ms between 300 and 1000.
await args.page.click('input[name="q"]')
await hesitate(args.page, { max: 2000, min: 1000 }) // hesitate 1000-2000 ms
await args.page.type('input[name="q"]', args.q, { delay: 20 })
await hesitate(args.page, { max: 4000, min: 2000 }) // hesitate 2000-4000 ms
await args.page.keyboard.press('Enter')
await hesitate(args.page, { max: 10000, min: 8000 }) // hesitate 8000-10000 ms
return args
}

// Close the browser.
query_action.activities[2] = async (args) => {
await args.page.close()
await args.browser.close()
return args
}

/**
* Teach bot
*/

query_bot.learn(query_action)

/**
* Send query
*/

query_bot.begin('query', { q: "MIT Technology Review" })
.catch((err) => {
throw Error(err)
})
```

## Changelog

Get the project's history in [CHANGELOG.md](CHANGELOG.md).

## Maintainer

Andy Bettisworth https://andybettisworth.com

## License

This project is released under the [MIT License](LICENSE.txt).