AWS Builder Center
Solving Captchas with Amazon Nova Act: A Developer’s Guide

Solving Captchas with Amazon Nova Act: A Developer’s Guide

This article introduces Amazon Nova Act, a generative AI-powered API designed to perform complex reasoning tasks. One potential use case is solving captchas such as reCAPTCHA and hCaptcha. The guide walks developers through account setup, environment preparation, and how to interact with the API to support automation workflows.

AWS Community Builder

Overview

Captchas are a common defense mechanism used to differentiate between human users and bots. While essential for security, captchas can disrupt legitimate automation workflows such as web scraping, automated testing, and bulk account management.
To address this challenge, we can using Amazon Nova Act, a Generative AI-powered API capable of solving a variety of captchas - including reCAPTCHA and hCaptcha - efficiently and reliably. Nova Act empowers developers to maintain automation workflows without compromising ethical or security standards.

Get Started

1. Create an Amazon Nova Act Account

To begin using Nova Act:
  • Sign up for a new account.
  • Once registered, you'll be redirected to the Nova Act console (see image below).
  • Generate an API key from the console and store it securely. You'll need it for API requests.
Amazon Nova Console


2. Initialize Your Project

Open a terminal and run the following commands to set up your local project environment:
Bash
mkdir nova && cd nova
python -m venv .venv
source .venv/bin/activate
pip install nova_act
With your environment configured, you’re ready to interact with the Nova Act API.

3. Sample Code to Interact with Nova Act

Below is a simple Python script that sends a task to Nova Act:
Python
import fire # type: ignore

from nova_act import NovaAct

def main(user_data_dir: str = None, headless: bool = False) -> None:
"""
Automates interaction with the MTCaptcha demo page using NovaAct.

Args:
user_data_dir (str, optional): Directory to store user data (e.g., for Chrome profile). Defaults to None.
headless (bool, optional): Whether to run the browser in headless mode. Defaults to False.
"""
with NovaAct(
starting_page="https://2captcha.com/demo/mtcaptcha",
user_data_dir=user_data_dir,
headless=headless,
) as nova:
nova.act(
"If a cookie consent banner appears, close it. "
"View the case-sensitive captcha character text at the center of the page. "
"Enter the captcha text in the input field with placeholder 'Enter text from image'. "
"Click the Check button."
)

if __name__ == "__main__":
fire.Fire(main)

Amazon Nova Act uses your task description to understand and solve the captcha using generative AI model.

4. Verify Result

Bash
Administrator@EC2AMAZ-LHMLS5H MINGW64 ~/Desktop/Nova/nova-act/src/nova_act/samples (main)
$ python captcha.py
2025-04-29 07:33:54,840 - nova_act.impl.playwright - WARNING - The Nova Act SDK is unable to run with `chrome_channel='chrome'` and is falling back to 'chromium'. If you wish to use an alternate `chrome_channel`, please install it with `python -m playwright install chrome`. For more information, please consult Playwright's documentation: https://playwright.dev/python/docs/browsers.

start session 1489e281-f900-46ba-8616-0c0ac9627663 on https://2captcha.com/demo/mtcaptcha logs dir C:\Users\ADMINI~1\AppData\Local\Temp\2\tmpju27dmhq_nova_act_logs\1489e281-f900-46ba-8616-0c0ac9627663

1489> act("If a cookie consent banner appears, close it. View the case-sensitive captcha characters text at center of page. Enter the captcha text with in the input field with placeholder 'Enter text from image'. Click Check button. ")
............
1489> think("I am on the 2captcha website. My task is to view the case-sensitive captcha characters text at the center of the page, enter the captcha text within the input field with placeholder 'Enter text from image', and click the Check button. The captcha is visible at the center of the page, and the text is 'jlljc'. The input field is empty, as indicated by the placeholder text 'Enter text from image'. I should type 'jlljc' into the input field to populate it.");
>> agentType("jlljc", "<box>388,504,428,762</box>");
..........
1489> think("The input field now contains 'jlljc', so my last action was successful. I have not checked the captcha yet, as I see the Check button is still visible. I should click the Check button to check the captcha.");
>> agentClick("<box>500,518,540,640</box>");
..............
1489> think("The captcha has been checked, as indicated by the 'Captcha is passed successfully!' message. Therefore, my last action was a success. I have viewed the case-sensitive captcha characters text, entered the captcha text in the input field, and clicked the Check button. The task is complete, and I was not asked to provide specific information, so I will simply return.");
>> return;
.
end session
Result

It works 🚀☁️😎

Limitation

Captcha Complexity: Nova Act performs well on most standard captchas, but extremely complex ones may still pose challenges.
Region Availability: As of now, Nova Act is only available in the US region.

Resources

For further reading, you can go to this link:  Introducing Amazon Nova Act | Amazon AGI Labs   
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article