This Knowledgebase article offers more details about the way a Kapow robot can interface with a data source that uses CAPTCHA to control access to the data.
By default, Kapow robots don't have a mechanism that can solve a CAPTCHA, but, depending on the CAPTCHA type, a "CAPTCHA solving" process could be implemented in a robot:
This type of CAPTCHA usually has an image containing a text (distorted but human-readable) and to solve it, the user has to enter the text in a field:
The image containing the text is usually edited such that it's not easy to read, mostly by an OCR software:
Or it contains a question:
It's possible to build a process to solve these CAPTCHAs in a robot but human interaction is necessary (or, if possible, an OCR software that can interpret the image to text). These would be the main steps in the robot logic:
- Load page with CAPTCHA
- Capture image containing CAPTCHA in a image (or binary) variable. This can be done using:
- Extract Image
- Extracting the url containing the image (if this is made available by the page)
- Extract Image
- Forwarding the image to be interpreted (by a human or OCR, if possible)
- Solving the CAPTCHA. To get to this step, the robot will have to have the CAPTCHA solution. This can be done in one of these two ways:
- include a loop where the robot checks if the result was posted (e.g. a human would post the text in a database and the robot queries it). If the result is not found, the robot would wait and go through a new iteration and check again if the result was posted.
- have a pair of robots: the first one would get the CAPTCHA image, send it (steps 1 - 3) and save the current session to a file or database (Save Session step). The second robot would be started with the CAPTCHA text as input (after CAPTCHA is solved). This robot would reload the previous session (Restore Session step), input the CAPTCHA text and continue on.
Google reCAPTCHA uses a more complicated way of detecting robots. A human user only needs to click "I'm not a robot"
The robot can click this check box but it will always get another challenge where it has to identify images (it's possible human users can be challenged as well):
Robots can't solve this type of CAPTCHA. The best way is to use a third party CAPTCHA solving service, ideally with a web interface or API (REST/SOAP). In this way, the robot's steps will be:
- Load Page with reCAPTCHA
- Provide the third party service the information it needs to solve the reCAPTCHA. Most times, these services will need the unique information about this instance of reCAPTCHA e.g. a token as below:
- Solve the CAPTCHA. Same as with regular text CAPTCHA, the robot will have to wait to get the response back from the CAPTCHA solving service or save the session (this session will later be used by a second robot that will have the CAPTCHA result as input)