Launched Friendly Captcha solver
Launched a Friendly Captcha bypass service.
Article describes the process of interaction with the API
What is Friendly Captcha
What is Friendly Captcha: Friendly Captcha is a system designed to protect websites from bots. Key feature - works silently. Unlike traditional captchas that require user interaction like solving puzzles or clicking boxes, Friendly Captcha works passively in the background. Users don't even notice it happening.
How Friendly Captcha works
- Proof-of-work: Friendly Captcha sends a complex cryptographic puzzle to the user's device that is automatically solved in the background, using the device's resources.
- No user action: Unlike other captchas that require clicking or typing, Friendly Captcha works entirely in the background without any user input.
How to bypass Friendly Captcha
It is not easy to bypass Friendly Captcha, but the bypass process can be automated using API.
The bypass process is as follows:
- The customer sends a set of required parameters from the landing page to the automatic solution service;
- The task is performed by a worker of the service, after which the answer is returned in the form of a token, which must be entered into the appropriate field for bypassing.
To use the API, one must register on site. After activating the profile, the customer receives the API key and can start working with the service.
The process of interaction with API is described below and code samples in the most popular programming languages are given.
Friendly Captcha solver API
Token-based method to bypass Friendly Captcha.
The token received must be set as the value
attribute of the input element with name frc-captcha-solution
and/or passed to the callback function defined in data-callback
attribute of the captcha div.
Task types
- FriendlyCaptchaTaskProxyless - we use our own pool of proxies
- FriendlyCaptchaTask - we use your proxies
FriendlyCaptchaTaskProxyless task type specification
Property | Type | Required | Description |
---|---|---|---|
type | String | Yes | Task type: FriendlyCaptchaTaskProxyless FriendlyCaptchaTask |
websiteURL | String | Yes | The full URL of target web page where the captcha is loaded. We do not open the page, not a problem if it is available only for authenticated users |
websiteKey | String | Yes | The value of data-sitekey attribute of captcha's div element on page. |
FriendlyCaptchaTask task type specification
FriendlyCaptchaTask
extends FriendlyCaptchaTaskProxyless
adding a set of proxy-related parameters listed below
Property | Type | Required | Description |
---|---|---|---|
proxyType | String | Yes | Proxy type: http socks4 socks5 |
proxyAddress | String | Yes | Proxy IP address or hostname |
proxyPort | Integer | Yes | Proxy port |
proxyLogin | String | No | Login for basic authentication on the proxy |
proxyPassword | String | No | Password for basic authentication on the proxy |
Request examples
Method: createTask
API endpoint: https://api.2captcha.com/createTask
FriendlyCaptchaTaskProxyless
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTaskProxyless",
"websiteURL": "https://example.com",
"websiteKey": "2FZFEVS1FZCGQ9"
}
}
FriendlyCaptchaTask
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "FriendlyCaptchaTask",
"websiteURL": "https://example.com",
"websiteKey": "2FZFEVS1FZCGQ9",
"proxyType": "http",
"proxyAddress": "1.2.3.4",
"proxyPort": "8080",
"proxyLogin": "user23",
"proxyPassword": "p4$$w0rd"
}
}
Response example
{
"errorId": 0,
"status": "ready",
"solution": {
"token": "f8b10f4ad796484bae963b1ebe3ce2bb.ZXL8Z...AAAAAA.AgAD" },
"cost": "0.00299",
"ip": "1.2.3.4",
"createTime": 1692863536,
"endTime": 1692863556,
"solveCount": 1
}
Using the token
Use the returned token as a value for input
with name = frc-captcha-solution
, then submit it's parent form, for example:
document.querySelector('input.frc-captcha-solution').value='f8b10f4ad796484bae963b1ebe3ce2bb.ZXL8Z...AAAAAA.AgAD'
document.querySelector('form').submit()
Please note, that form name can be customized with data-solution-field-name
attribute, then you need to use the name set as the attribute's value.
If there's a callback function defined, you can call it passing the token as argument. For example, if data-callback="doneCallback"
you should run it as:
doneCallback('f8b10f4ad796484bae963b1ebe3ce2bb.ZXL8Z...AAAAAA.AgAD')
References
Additional information:
Support
If you still have questions about the service, you can ask a question:
- Create a ticket
- Send an e-mail to support@2captcha.com
- Skype
We value feedback and want to make sure the service is perfect for your needs.