How KeyCheck Works
KeyCheck contains multiple keychains. Each keychain has:- A result (Success/Fail/Ban/Retry/Custom)
- One or more conditions
- A mode (AND/OR)
Set Up Your Pipeline
Create a new pipeline with these blocks:
- HttpRequest - send login request
- ParseJSON - extract data (optional)
- KeyCheck - classify the result
Configure the HTTP Request
Set up your login endpoint:The response is automatically stored in
data.SOURCE and data.RESPONSECODE.Create Success Keychain
In the KeyCheck block, add your first keychain:Add conditions that indicate a successful login. Common patterns:Pattern 1: Status Code CheckPattern 2: Response Contains TokenPattern 3: Specific JSON FieldUse AND mode when ALL conditions must be true.
Create Fail Keychain
Add a second keychain for failed logins:Common failure indicators:Invalid Credentials401 UnauthorizedWrong PasswordUse OR mode so any failure message triggers a Fail.
Handle Bans and Rate Limits
Add keychains for ban detection (should be BEFORE Fail):Conditions:When a check is marked as Ban:
- The proxy (if used) is temporarily banned
- The data line is re-queued with a different proxy
- Helps avoid burning through your entire proxy pool
Add Retry for Timeouts
Add a Retry keychain for temporary errors:Conditions:(Response code 0 means connection timeout)(Bad Gateway - server temporarily down)Retry entries are re-queued up to
max_retries times (set in Runner settings).Real-World Example: Multi-Step Login
Some sites return different responses for “user doesn’t exist” vs “wrong password”. Here’s how to capture both:Advanced: Using Parsed Variables
Combine ParseJSON with KeyCheck for precise checks:Comparison Operators
| Operator | Use Case |
|---|---|
Contains | Check if response contains a substring |
NotContains | Response must NOT contain substring |
EqualTo | Exact match (case-sensitive) |
NotEqualTo | Must not match |
MatchesRegex | Advanced pattern matching |
GreaterThan | Numeric comparison |
LessThan | Numeric comparison |
Exists | Variable is defined |
NotExists | Variable is undefined |
Tips
Use
data.ADDRESS to check the final URL after redirects. Useful for detecting login redirects vs error pages.Debugging KeyCheck Issues
-
All entries show as Error
- No keychain matched → add a catch-all Fail keychain
- Check your condition values for typos
-
Success/Fail reversed
- Check keychain order (Success before Fail)
- Verify your condition logic (AND vs OR)
-
Random failures on valid combos
- Add Ban detection for rate limits
- Lower thread count to reduce request rate
- Enable proxy rotation