InfoFor the
request, Whois, session, and user-agent objects, every string value should be enclosed in a single-quotes ' and not in double-quotes ".request
| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
| headers | dict | Request headers | |
| ip | string | Client IP | request.ip request.ip == ‘117.20.32.5’ || request.ip == ‘117.20.32.4’ |
| uri | string | Domain’s URI (URL path + arguments) | request.uri (‘/prehistoric/monotony/monotony.phtml’ or ‘/amfphp/services’) in request.uri |
| path | string | Domain’s URL path | request.path request.path in [‘/process_neopet_desc.phtml’, ‘/modify_neomessages.phtml’] |
| method | string | HTTP method (uppercase). | request.method request.method == ‘OPTION’ |
| origin_ip | string | Web application server IP | request.origin_ip request.origin_ip == ‘120.36.54.1’ |
| ja3 | string | TLS fingerprint. | request.ja3 request.ja3 == ‘e2925c27149b0d0dc34373d55040dde1’ or request.ja3 == ‘3e9b20610098b6c9bff953856e58016a’ or request.ja3 == ‘7d671906ed4a1edac3262a54676dacfa’ |
| http_version | string | Represents HTTP version | request.http_version request.http_version in [‘1.1’] |
| is_api() | function | Returns true if the request is API | request.is_api() |
| is_ajax() | function | Returns true if the request is AJAX | request.is_ajax() |
| is_static() | function | Returns true if the request is static | request.is_static() |
| ip_in_range | function | Returns true if client IP is within the specified range | request.ip_in_range(<string>, <string>)request.ip_in_range(‘72.21.217.0’, ‘72.21.217.255’) or request.ip_in_range(‘2409:4072:6c8c:e228:ecaf:ce2c:fd7d:0000’, ‘2409:4072:6c8c:e228:ecaf:ce2c:fd7d:4780’) |
| rate_limit | function | Returns true if the rate limit is exceeded for these parameters (the scope is ‘ip’/‘cluster’). For parameter descriptions, check out the Rate limiting guide. | rate_limit([ip <string>, ...],url <string>,interval <int>,requests <int>,[method <string>,...],[status_code <int>,...],content_type <string>,scope <string>) example: request.rate_limit([], ’/’, 5, 200, [‘GET’, ‘HEAD’], [], ‘text/html; charset=’, ‘ip’) |
whois
| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
| country | string | Two-letter country code (uppercase). | whois.country whois.country in [‘BR’, ‘VN’, ‘ID’] |
| org | string | Organization name from the WHOIS database. | whois.org whois.org in [‘Google Inc’, ‘Google Inc.’, ‘Google LLC’, ‘Google Incorporated’] |
| owner_type | string | Owner type of the range. | whois.owner_type whois.owner_type != ‘hosting services’ |
session
| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
| request_counter | int | Sequential number of the request within the session. | session.session_request_counter session.request_counter > 1000 |
| profiling_status | string | Client’s fingerprint profiling status. Values: Initiated: JavaScript was injected in the response and sent to the client for execution. Executed once: JavaScript was executed, and WAAP received preliminary results. Profiling error: An error occurred during profiling. Profiling completed: Profiling completed without error. Idle: All JavaScript tests and fingerprinting process completed. | session.profiling_status session.profiling_status == ‘idle’ |
response
| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
| status | int | HTTP status code | response.status |
| headers | dict | Response headers | response.headers[‘Access-Control-Allow-Credentials’] == ‘true’ |
tags
| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
exists(tag <string>) | function | Returns true if the tag exists. | tags.exists(<string>)tags.any([ <string>, <string>, …]) up to 10 tagstags.all([ <string>, <string>, …]) up to 10 tagstags.any([‘proxynetwork’,‘hostingservices’]) tags.exists(‘penalty’) |
any([tag <string>, …]) | function | Returns true if any of the tags exists. | |
all([tag <string>, …]) | function | Returns true if all tags exist. |
user-agent
The ua_parsed table contains user agent information collected by WAAP from the source of the logged request.| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
| engine | string | The client engine. For example, Gecko. | user_agent.engine |
| client | string | The name of the client. An example of client name is “Firefox”. | user_agent.client |
| client_type | string | The type of client. Optional values: Major browser, NA, Lib, Crawler, Custom browser, mobile app, Headless browser, Bot, Application, mail client, Site monitoring, RSS reader, Game console, Text browser, Network diagnostics, certificate authority, paying service. | user_agent.client_type ‘major browser’ in user_agent.client_type |
| client_version | string | The client engine’s version. | user_agent.client_version |
| client_version_float | string | A possibly truncated version of the client browser engine’s version. | user_agent.client_version_float |
| os | string | The client computer’s operating system. An example of os is “Mac OS X 10.14”. | user_agent.os |
| cpu | string | The client computer’s CPU. An example of CPU is “Intel”. | user_agent.cpu |
| device | string | Information about the client device. An example of a device is “mac”. | user_agent.device |
| device_type | string | Additional information about the client device. Optional values: - Web search engine bots - mobile - NA - SEO - Analytics or marketing bots - Preview bot - Media or entertainment search bots - Social media or blog bots - RSS seed reader bots - Site monitoring and web development bots - Web archiver bots - console - Job search engine bots - Online advertising bots - News aggregator bots - Academic or research bots - Desktop - Business intelligence bots - Automated shopping cart and sniper bots - Enterprise data aggregator bots - Media player | user_agent.device_type user_agent.device_type == ‘na’ |
client_data
| Attribute | Type | Description | Compiled source field |
|---|---|---|---|
| fingerprint[‘hash’] | dict | A table that contains fingerprint information about the request (the information is collected by WAAP with injected JavaScript):
client_data.fingerprint == ‘kvd8oxizrdl-41-37zpvwqrr-5tzoaavgfr7-v2osmr4iefe-noieo-90.3095389639745667’ | client_data.fingerprint[‘hash’]client_data.fingerprint[‘hash’] == ‘9be394dca715eca8e42783397a507d2e’ |
| fingerprint[‘js’] | dict | client_data.fingerprint[‘js’] | |
| fingerprint[‘flash’] | dict | client_data.fingerprint[‘flash’] | |
| fingerprint[‘header’] | dict | client_data.fingerprint[‘header’] |