---
title: "Web Scraping com o Ghost Cursor em 2026"
slug: web-scraping-with-ghost-cursor
date: 2025-06-29T10:30:03+00:00
modified: 2025-11-04T08:49:03+00:00
permalink: https://brightdata.com.br/blog/dados-do-site/web-scraping-with-ghost-cursor
type: blog
---

[ Blog ](https://brightdata.com.br/blog "Blog") / [Dados do site](https://brightdata.com.br/blog/dados-do-site)







 [Dados do site](https://brightdata.com.br/blog/dados-do-site)

# Web Scraping com o Ghost Cursor em 2026

Torne seu raspador da Web menos detectável usando o Ghost Cursor com o Puppeteer. Descubra como configurá-lo e usá-lo para uma raspagem mais humana.

 9 min de leitura





 [ ![Jacob Nulty](https://media.brightdata.com.br/2024/12/Jacob-Nulty-50x50.jpg) ](https://brightdata.com/blog/authors/jake-nulty)

 [Jake Nulty

Technical Writer

 ](https://brightdata.com/blog/authors/jake-nulty)





 ![Web Scraping with Ghost Cursor](https://media.brightdata.com.br/2025/06/Web-Scraping-with-Ghost-Cursor.png)





Neste guia, você aprenderá sobre o Ghost Cursor. Ao terminar o tutorial, você será capaz de responder às seguintes perguntas.

- O que é o Ghost Cursor?
- Com quais ferramentas o Ghost Cursor é compatível?
- Como o Ghost Cursor é usado?
- Ele é compatível com ferramentas de desbloqueio (proxies, navegadores remotos etc.)?
- Quando a Ghost Cursor é a escolha certa?

## O que é o Ghost Cursor e por que você deve se preocupar?

O Ghost Cursor é um plug-in para o [Puppeteer](/blog/procedimentos/web-scraping-puppeteer). Ele permite controlar o cursor do mouse e fazer interações com a página usando movimentos mais semelhantes aos humanos.

Quando você clica em um botão com o Puppeteer, o cursor se move para o botão instantaneamente e clica nele. Isso é muito robótico. Sim, é rápido e eficiente, mas é uma das muitas coisas que muitas vezes fazem com que você seja bloqueado ao raspar a Web.

![Como o cursor se move no Puppeteer](https://media.brightdata.com/2025/06/image-106-1024x302.png)Com o Ghost Cursor, criamos uma quantidade infinita de pontos em uma curva entre dois pontos na página. O cursor segue essa curva de seu local atual até o elemento de destino. Essa curva parece muito mais humana.

![Como o cursor se move com o Ghost Cursor](https://media.brightdata.com/2025/06/image-107-1024x480.png)## Primeiros passos

Antes de começarmos a codificar, presumimos que você tenha uma familiaridade básica com JavaScript. Primeiro, precisamos criar uma nova pasta de projeto e inicializar um projeto JavaScript.

O comando abaixo cria uma nova pasta e entra em nosso diretório de projeto.

```none
mkdir your-ghost-cursor-project
cd your-ghost-cursor-project
```

Você pode usar `o npm init` para converter essa nova pasta em um projeto NodeJS. Usamos o sinalizador `--y` porque este é um tutorial. Não precisamos de uma configuração pronta com decisões de licenciamento.

```none
npm init --y
```

Agora, vamos instalar nossas dependências. Bastante simples – temos apenas duas.

```none
npm install ghost-cursor puppeteer
```

## Uso básico do Ghost Cursor

No script abaixo, demonstramos o uso básico do Ghost Cursor. Primeiro, iniciamos um navegador headful – isso não é um requisito, mas você poderá ver o Ghost Cursor em ação.

Depois de criar uma nova página, nós a passamos para `installMouseHelper()`. Isso nos permite visualizar o movimento do cursor dentro da página renderizada. Em seguida, criamos um objeto cursor. O cursor obtém a localização do livro e, em seguida, clica nele.

Por fim, tiramos uma captura de tela da página do produto antes de fechar o navegador e sair do programa.

```none
const puppeteer = require('puppeteer');
const { createCursor, installMouseHelper } = require('ghost-cursor');

//this function holds our runtime
async function run() {

    //launch a headed browser to watch ghost cursor in action
    const browser = await puppeteer.launch({
        headless: false,
    });

    const page = await browser.newPage();

    //this allows you to watch the cursor as it moves around
    await installMouseHelper(page);

    //create the actual cursor object
    const cursor = createCursor(page);

    await page.goto("https://books.toscrape.com");

    //find the link inside the product pod
    const book = await cursor.getElement("article[class='product_pod'] a");

    //get its location (x,y) coordinates
    const location = cursor.getLocation(book);

    //move to the coordinates
    await cursor.moveTo(location);

    //click on the book
    await cursor.click(book);

    //take a screenshot of the product page
    await page.screenshot({path: "book.png"});

    await browser.close();
}

run().catch(console.error);
```

## Métodos disponíveis no Ghost Cursor

Agora que você já viu o Ghost Cursor em ação, vamos dar uma olhada no que seus métodos individuais fazem. Cada um deles é uma nova peça para sua caixa de ferramentas de raspagem.

### `installMouseHelper()`

Usamos `installMouseHelper()` para rastrear o movimento do mouse dentro do navegador renderizado. Esse método permite que você observe o cursor em ação. Essa parte não é necessária para o uso do cursor e precisa de um navegador completo para ser executada. Trata-se mais de uma nova peça de depuração do que de uma ferramenta útil.

```none
//launch a headed browser to watch ghost cursor in action
const browser = await puppeteer.launch({
    headless: false,
});

const page = await browser.newPage();

//this allows you to watch the cursor as it moves around
await installMouseHelper(page);
```

### `getElement()`

`getElement()` funciona praticamente da mesma forma que `page.$()` funciona no Puppeteer. Na verdade, até passamos elementos regulares do Puppeteer para outros métodos e o cursor apresentou erros, mas continuou a funcionar. Ao localizar um elemento na página, é melhor usar `cursor.getElement()`.

```none
//find the link inside the product pod
const book = await cursor.getElement("article[class='product_pod'] a");
```

### `getLocation()`

Depois de encontrar um elemento, você geralmente precisa recuperar sua localização. Esse método permite que você recupere as coordenadas (x,y) de qualquer elemento da página com o mínimo de código.

```none
//get its location (x,y) coordinates
const location = cursor.getLocation(book);
```

### `mover()`

`move()` é um método muito conveniente. Você pode passar um objeto seletor ou um elemento de página diretamente para `move()` e o cursor se moverá até ele – naturalmente, como um ser humano.

```none
//move straight to the book
await cursor.move(book);

//click on the book
await cursor.click(book);
```

### `moveTo()`

`moveTo` permite que você passe as coordenadas diretamente para o cursor. Em vez de mover para o livro, usamos `getLocation()` e passamos sua saída para o cursor com `moveTo()`.

```none
//move to the coordinates
await cursor.moveTo(location);

//click on the book
await cursor.click(book);
```

### `scrollIntoView()`

Às vezes, você não quer mover o cursor diretamente sobre um objeto. Talvez você precise apenas rolar a página. `scrollIntoView()` permite que você passe um seletor ou elemento de página e role até que o elemento apareça dentro da janela de visualização.

```none
//scroll until the book is in the viewport
await cursor.scrollIntoView(book);

//click on the book
await cursor.click(book);
```

### `scrollTo()`

`scrollTo()` é outra opção muito conveniente. Ele permite que você passe para `cima`, `para baixo`, `para a esquerda` e para `a direita`. Controle seus movimentos de rolagem com linguagem natural, sem necessidade de IA!

```none
//scroll to the top of the page
await cursor.scrollTo('top');

//click on the book
await cursor.click(book);
```

### `rolagem()`

`scroll()` é talvez a mais básica de nossas ações de rolagem. Com o scroll, você passa as coordenadas (x,y) – lembra-se de `getLocation()`? Em seguida, o cursor rola até que esteja dentro da janela de visualização.

```none
//move to the coordinates
await cursor.scroll(location);

//click on the book
await cursor.click(book);
```

## Limitações comuns do Ghost Cursor

- **CAPTCHAs**: O Ghost Cursor pode fazer com que você pareça mais humano, mas, no final das contas, ainda é você quem controla o scraper. Dê uma olhada nos [10 principais solucionadores de CAPTCHA](/blog/dados-do-site/best-captcha-solvers) para saber mais.
- **Titereiro**: O cursor Ghost suporta oficialmente apenas o Puppeteer. Em comparação com outros navegadores sem cabeça, como o [Selenium](/blog/procedimentos/using-selenium-for-web-scraping) e o [Playwright](/blog/procedimentos/playwright-web-scraping), o Puppeteer é bastante limitado e carece de recursos e manutenção.
- **Somente local**: O Ghost Cursor precisa ser executado localmente. Isso limita muito as opções de desbloqueio. Com o [Scraping Browser](/products/scraping-browser), você pode executar navegadores remotos sem cabeça com gerenciamento automatizado de proxy e solução de CAPTCHA. Como não oferece suporte à navegação remota, o Ghost Cursor não pode tirar o máximo proveito das [melhores ferramentas disponíveis](/blog/dados-do-site/best-web-scraping-tools).

## Integração de proxy

Embora não seja compatível com o navegador de raspagem, o Puppeteer se integra com proxies locais. O Puppeteer segue a autenticação de proxy padrão com seu URL de proxy básico, nome de usuário e senha.

O código abaixo fornece um script básico que pode ser ajustado para qualquer tempo de execução do Puppeteer/Ghost Cursor. Certifique-se de substituir o nome de usuário, o nome da zona e a senha por suas próprias credenciais!

```none
const puppeteer = require('puppeteer');
const { createCursor } = require('ghost-cursor');

async function run() {
    const browser = await puppeteer.launch({
        headless: false,

        args: [
            '--proxy-server=http://brd.superproxy.io:33335',
            '--ignore-certificate-errors'
        ]

    });

    const page = await browser.newPage();

    const cursor = createCursor(page);

    await page.authenticate({
        username: "brd-customer-<your-username>-zone-<your-zone-name>",
        password: "<your-password>"
    });

    await page.goto("https://ipinfo.io");

    await cursor.click("a[href='/what-is-my-ip']");

    await page.screenshot({path: "ipinfo.png"});

    await browser.close();
}

run().catch(console.error);
```

Conforme mencionado, com o Puppeteer e o Ghost Cursor, você não pode aproveitar ao máximo o próprio navegador de raspagem. O detalhamento abaixo mostra o custo de uma única execução usando o raspador acima. O custo é realmente revelador.

![Detalhamento do custo do Ghost Cursor com Proxies](https://media.brightdata.com/2025/06/image-108.png)Ao gerenciar seus proxies manualmente, é melhor usar uma rotação. Como você pode ver com o Web Unlocker, esse scrape custa US$ 0,23 para ser executado. Com uma conexão residencial, foi de US$ 0,05 e com uma conexão de data center, custa apenas US$ 0,01.

**Ao gerenciar proxies com o Ghost Cursor e o Puppeteer, use proxies de datacenter quando disponíveis. Os proxies residenciais devem ser usados somente quando a conexão do datacenter for bloqueada pelo site de destino.**

## Conclusão

O Ghost Cursor é uma maneira simples e eficaz de fazer com que seu scraper pareça mais humano. Quando seus scrolls e cliques são mais naturais, é menos provável que você seja bloqueado no site de destino. Essa ferramenta funciona com integração geral de proxy, mas não é compatível com navegadores remotos.

Para tarefas básicas de raspagem, o Ghost Cursor pode adicionar um pouco de humanidade ao seu código sem muito boilerplate. Dê uma olhada nos produtos de raspagem mencionados neste artigo para elevar o nível da sua raspagem hoje.

- [Web Unlocker](/products/web-unlocker): Solução automatizada de CAPTCHA e gerenciamento de proxy. Basta conectá-lo e continuar codificando.
- [Navegador de raspagem](/products/scraping-browser): Navegação remota com proxies gerenciados e um solucionador de CAPTCHA.
- [Proxies residenciais](/proxy-types/residential-proxies): Roteie seu tráfego por meio de conexões de Internet domésticas reais em dispositivos de consumidores. Misture-se com o melhor do tráfego.
- [Proxies de data center](/proxy-types/datacenter-proxies): hardware de ponta com conexões extremamente rápidas. Extraia sites intermediários a baixo custo.

Inscreva-se para uma avaliação gratuita e comece hoje mesmo!



Contate-nosTeste grátis![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Índice







Dedicated Scraper APIs &amp; No-Code Scrapers

Over 1000 scrapers for all popular domains. Simplify your web scraping.

[See pricing](/pricing/web-scraper "See pricing")

Just want data? Skip scraping.

Hundreds of ready-to-use datasets from all popular domains.

[See pricing](/pricing/datasets "See pricing")







 [ ](https://news.ycombinator.com/submitlink?t=Web+Scraping+com+o+Ghost+Cursor+em+2026&u=https://brightdata.com.br/blog/dados-do-site/web-scraping-with-ghost-cursor) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Web+Scraping+com+o+Ghost+Cursor+em+2026&url=https://brightdata.com.br/blog/dados-do-site/web-scraping-with-ghost-cursor) [ ](http://www.reddit.com/submit?title=Web+Scraping+com+o+Ghost+Cursor+em+2026&url=https://brightdata.com.br/blog/dados-do-site/web-scraping-with-ghost-cursor)







##  Você também pode estar interessado em

 [ ![OpenHuman with Bright Data](https://media.brightdata.com.br/2026/09/OpenHuman-with-Bright-Data.png) ](https://brightdata.com.br/blog/ai/openhuman-with-bright-data "Acesso à Web Pronto para Produção no OpenHuman Através do Bright Data CLI")

 [AI



 ![Antonello Zanini](https://media.brightdata.com.br/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Acesso à Web Pronto para Produção no OpenHuman Através do Bright Data CLI

Integre o Bright Data CLI ao OpenHuman para habilitar acesso à web pronto para produção e coleta de dados para agentes de IA.



 09-Sep-2026

 14 min de leitura

 ](https://brightdata.com.br/blog/ai/openhuman-with-bright-data)

 [ ![Multimodal Web Scraping with MiniMax](https://media.brightdata.com.br/2026/09/Multimodal-Web-Scraping-with-MiniMax.png) ](https://brightdata.com.br/blog/dados-do-site/multimodal-web-scraping-with-minimax "Scraping de Dados Multimodal com MiniMax")

 [Dados do site



 ![Antonello Zanini](https://media.brightdata.com.br/2022/12/Antonello-Zanini-2-50x50.jpg)

Antonello Zanini

Technical Writer





### Scraping de Dados Multimodal com MiniMax

Combine a API Web Unlocker da Bright Data com a visão MiniMax M3 para extrair dados estruturados de imagens e capturas de tela de páginas web.



 09-Sep-2026

 5 min de leitura

 ](https://brightdata.com.br/blog/dados-do-site/multimodal-web-scraping-with-minimax)

 [ ![The 10 Best CLI Tools for Codex in 2026](https://media.brightdata.com.br/2026/08/The-10-Best-CLI-Tools-for-Codex-in-2026.png) ](https://brightdata.com.br/blog/ai/best-cli-tools-for-codex "As 10 Melhores Ferramentas CLI para Codex em 2026 – Testadas & Classificadas")

 [AI



 ![Daniel Shashko](https://media.brightdata.com.br/2022/04/Daniel-Shashko-2-50x50.png)

Daniel Shashko

Web Data &amp; AI Expert





### As 10 Melhores Ferramentas CLI para Codex em 2026 – Testadas &amp; Classificadas

As 10 ferramentas CLI que tornam o Codex mais rápido e capaz, começando com o Bright Data CLI para acesso real à web de dentro do sandbox.



 06-Sep-2026

 24 min de leitura

 ](https://brightdata.com.br/blog/ai/best-cli-tools-for-codex)
