-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Expand file tree
/
Copy pathindex.yaml
More file actions
2249 lines (1913 loc) · 106 KB
/
index.yaml
File metadata and controls
2249 lines (1913 loc) · 106 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
entries:
- name: http.cookie
data_type: String
categories: [Request, Headers]
keywords: [request, cookie, header, client, visitor]
summary: The entire cookie as a string.
example_value: |-
"session=8521F670545D7865F79C3D7BEDC29CCE;-background=light"
- name: http.host
data_type: String
categories: [Request, URI]
keywords: [request, uri, url, domain, client, visitor]
summary: The hostname used in the full request URI.
description: |-
The `http.host` field contains the `Host` header from the original request.
If you have configured [Origin Rules](/rules/origin-rules/) that change the hostname, they will not be reflected in the `http.host` field value.
example_value: |-
"www.example.org"
- name: http.referer
data_type: String
categories: [Request, Headers]
keywords: [request, header, referer, referrer, client, visitor]
summary: The HTTP `Referer` request header, which contains the address of the web page that linked to the currently requested page.
example_value: |-
"https://developer.example.org/en-US/docs/Web/JavaScript"
- name: http.request.full_uri
data_type: String
categories: [Request, URI]
keywords: [request, uri, url, client, visitor]
summary: The full URI as received by the web server.
description: |-
The value will not include the `#fragment` part, which is not sent to web servers.
example_value: |-
"https://www.example.org/articles/index?section=539061&expand=comments"
- name: http.request.method
data_type: String
categories: [Request]
keywords: [request, client, visitor]
summary: The HTTP method, returned as a string of uppercase characters.
example_value: |-
"GET"
- name: http.request.cookies
data_type: Map<Array<String>>
categories: [Request, Headers]
keywords: [request, header, client, visitor]
plan_info_label: Pro or above
summary: The `Cookie` HTTP header associated with a request represented as a Map (associative array).
description: |-
Requires a Cloudflare Pro, Business, or Enterprise plan.
The cookie names are URL decoded. If two cookies have the same name after decoding, their value arrays are merged.
The cookie values are not pre-processed and retain the original case used in the request.
example_value: |-
{ "app": ["test"] }
example_block: |-
any(http.request.cookies["app"][*] == "test")
- name: http.request.timestamp.sec
data_type: Integer
categories: [Request]
keywords: [request, timestamp, client, visitor]
summary: The timestamp when Cloudflare received the request, expressed as UNIX time in seconds.
description: |-
The field value is 10 digits long.
When validating HMAC tokens in an expression, pass this field as the `currentTimestamp` argument to the [`is_timed_hmac_valid_v0()`](/ruleset-engine/rules-language/functions/#hmac-validation) validation function.
To obtain the timestamp milliseconds, use the [`http.request.timestamp.msec`](/ruleset-engine/rules-language/fields/reference/http.request.timestamp.msec/) field.
example_value: |-
1484063137
- name: http.request.timestamp.msec
data_type: Integer
categories: [Request]
keywords: [request, timestamp, client, visitor]
summary: The millisecond when Cloudflare received the request, between 0–999.
description: |-
To obtain the complete timestamp, use both [`http.request.timestamp.sec`](/ruleset-engine/rules-language/fields/reference/http.request.timestamp.sec/) and [`http.request.timestamp.msec`](/ruleset-engine/rules-language/fields/reference/http.request.timestamp.msec/) fields.
example_value: |-
857
- name: http.request.uri
data_type: String
categories: [Request, URI]
keywords: [request, uri, url, path, query, query string, client, visitor]
summary: The URI path and query string of the request.
example_value: |-
"/articles/index?section=539061&expand=comments"
- name: http.request.uri.path
data_type: String
categories: [Request, URI]
keywords: [request, uri, url, path, client, visitor]
summary: The URI path of the request.
example_value: |-
"/articles/index"
- name: http.request.uri.path.extension
data_type: String
categories: [Request, URI]
keywords: [request, uri, url, path, client, visitor]
summary: The lowercased file extension in the URI path without the dot (`.`) character.
description: |-
This corresponds to the string after the last dot in the URI path, excluding the query string.
If the first character of the last path segment is a dot and the segment does not contain other dot characters, the field value will be an empty string (`""`). Having a dot as the first character does not represent a file extension and is commonly used in UNIX-like systems to denote a hidden file or directory.
Example values:
- If the URI path is `/articles/index.html`, the field value will be `"html"`.
- If the URI path is `/articles/index.`, the field value will be an empty string (`""`).
Example values:
| URI path | Field value |
| -------------- | ----------- |
| `/foo` | `""` |
| `/foo.mp3` | `"mp3"` |
| `/.mp3` | `""` |
| `/.foo.mp3` | `"mp3"` |
| `/foo.tar.bz2` | `"bz2"` |
| `/foo.` | `""` |
| `/foo.MP3` | `"mp3"` |
- name: http.request.uri.query
data_type: String
categories: [Request, URI]
keywords: [request, uri, url, query, query string, client, visitor]
summary: The entire query string, without the `?` delimiter.
example_value: |-
"section=539061&expand=comments"
- name: http.user_agent
data_type: String
categories: [Request, Headers]
keywords: [request, header, agent, user-agent, browser, client, visitor]
summary: The HTTP `User-Agent` request header, which contains a characteristic string to identify the client operating system and web browser.
example_value: |-
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"
- name: http.request.version
data_type: String
categories: [Request]
keywords: [request, protocol, client, visitor]
summary: The version of the HTTP protocol used. Use this field when different checks are needed for different versions.
description: |-
Example values:
- `"HTTP/1.1"`
- `"HTTP/3"`
- name: http.x_forwarded_for
data_type: String
categories: [Request, Headers]
keywords: [request, header, proxy, ip, client, visitor]
summary: The full value of the `X-Forwarded-For` HTTP header.
example_value: |-
"203.0.113.195, 70.41.3.18"
- name: ip.src
data_type: IP address
categories: [Request]
keywords: [request, proxy, ip, client, visitor]
summary: The client TCP IP address, which may be adjusted to reflect the actual address of the client using HTTP headers such as `X-Forwarded-For` or `X-Real-IP`.
example_value: |-
93.184.216.34
- name: ip.src.lat
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, client, visitor]
summary: The latitude associated with the client IP address.
example_value: |-
"37.78044"
- name: ip.src.lon
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, client, visitor]
summary: The longitude associated with the client IP address.
example_value: |-
"-122.39055"
- name: ip.src.city
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, client, visitor]
summary: The city associated with the client IP address.
example_value: |-
"San Francisco"
- name: ip.src.postal_code
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, zip, zip code, client, visitor]
summary: The postal code associated with the incoming request.
example_value: |-
"78701"
- name: ip.src.metro_code
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, dma, client, visitor]
summary: The metro code or Designated Market Area (DMA) code associated with the incoming request.
example_value: |-
"635"
- name: ip.src.region
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, state, client, visitor]
summary: The region name associated with the incoming request.
example_value: |-
"Texas"
- name: ip.src.region_code
data_type: String
categories: [Request, Geolocation]
keywords: [request, location, geolocation, state, client, visitor]
summary: The region code associated with the incoming request.
example_value: |-
"TX"
- name: ip.src.timezone.name
data_type: String
categories: [Request, Geolocation]
keywords:
[request, location, geolocation, time zone, clock, client, visitor]
summary: The name of the timezone associated with the incoming request.
description: |-
This field is only available in rewrite expressions of [Transform Rules](/rules/transform/).
example_value: |-
"America/Chicago"
- name: ip.src.asnum
data_type: Number
categories: [Request, Geolocation]
keywords:
[request, location, geolocation, asn, ip.geoip.asnum, client, visitor]
summary: The 16-bit or 32-bit integer representing the Autonomous System (AS) number associated with the client IP address.
description: |-
This field has the same value as the `ip.geoip.asnum` field, which is deprecated. The `ip.geoip.asnum` field is still available for new and existing rules, but you should use the `ip.src.asnum` field instead.
_GeoIP is the registered trademark of MaxMind, Inc._
- name: ip.src.continent
data_type: String
categories: [Request, Geolocation]
keywords:
[request, location, geolocation, ip.geoip.continent, client, visitor]
summary: The continent code associated with the client IP address.
description: |-
Values:
- `"AF"`: Africa
- `"AN"`: Antarctica
- `"AS"`: Asia
- `"EU"`: Europe
- `"NA"`: North America
- `"OC"`: Oceania
- `"SA"`: South America
- `"T1"`: Tor network
This field has the same value as the `ip.geoip.continent` field, which is deprecated. The `ip.geoip.continent` field is still available for new and existing rules, but you should use the `ip.src.continent` field instead.
_GeoIP is the registered trademark of MaxMind, Inc._
- name: ip.src.country
data_type: String
categories: [Request, Geolocation]
keywords:
[request, location, geolocation, ip.geoip.country, client, visitor]
summary: The 2-letter country code in [ISO 3166-1 Alpha 2](https://www.iso.org/obp/ui/#search/code/) format.
example_value: |-
"GB"
description: |-
For more information on the ISO 3166-1 Alpha 2 format, refer to [ISO 3166-1 Alpha 2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) on Wikipedia.
This field has the same value as the `ip.geoip.country` field, which is deprecated. The `ip.geoip.country` field is still available for new and existing rules, but you should use the `ip.src.country` field instead.
_GeoIP is the registered trademark of MaxMind, Inc._
- name: ip.src.subdivision_1_iso_code
data_type: String
categories: [Request, Geolocation]
keywords:
[
request,
location,
geolocation,
ip.geoip.subdivision_1_iso_code,
region,
client,
visitor,
]
plan_info_label: Business or above
summary: The ISO 3166-2 code for the first-level region associated with the IP address.
example_value: |-
"GB-ENG"
description: |-
When the actual value is not available, this field contains an empty string.
Requires a Cloudflare Business or Enterprise plan.
For more information on the ISO 3166-2 standard and the available regions, refer to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) on Wikipedia.
This field has the same value as the `ip.geoip.subdivision_1_iso_code` field, which is deprecated. The `ip.geoip.subdivision_1_iso_code` field is still available for new and existing rules, but you should use the `ip.src.subdivision_1_iso_code` field instead.
_GeoIP is the registered trademark of MaxMind, Inc._
- name: ip.src.subdivision_2_iso_code
data_type: String
categories: [Request, Geolocation]
keywords:
[
request,
location,
geolocation,
ip.geoip.subdivision_2_iso_code,
region,
client,
visitor,
]
plan_info_label: Business or above
summary: The ISO 3166-2 code for the second-level region associated with the IP address.
example_value: |-
"GB-SWK"
description: |-
When the actual value is not available, this field contains an empty string.
Requires a Cloudflare Business or Enterprise plan.
For more information on the ISO 3166-2 standard and the available regions, refer to [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) on Wikipedia.
This field has the same value as the `ip.geoip.subdivision_2_iso_code` field, which is deprecated. The `ip.geoip.subdivision_2_iso_code` field is still available for new and existing rules, but you should use the `ip.src.subdivision_2_iso_code` field instead.
_GeoIP is the registered trademark of MaxMind, Inc._
- name: ip.src.is_in_european_union
data_type: Boolean
categories: [Request, Geolocation]
keywords:
[
request,
location,
geolocation,
ip.geoip.is_in_european_union,
country,
client,
visitor,
]
plan_info_label: Business or above
summary: Whether the request originates from a country in the European Union (EU).
description: |-
Requires a Cloudflare Business or Enterprise plan.
Countries in the EU (from geolocation data):
| Country code | Country name |
| ------------ | --------------- |
| `AT` | Austria |
| `AX` | Åland Islands |
| `BE` | Belgium |
| `BG` | Bulgaria |
| `CY` | Cyprus |
| `CZ` | Czechia |
| `DE` | Germany |
| `DK` | Denmark |
| `EE` | Estonia |
| `ES` | Spain |
| `FI` | Finland |
| `FR` | France |
| `GF` | French Guiana |
| `GP` | Guadeloupe |
| `GR` | Greece |
| `HR` | Croatia |
| `HU` | Hungary |
| `IE` | Ireland |
| `IT` | Italy |
| `LT` | Lithuania |
| `LU` | Luxembourg |
| `LV` | Latvia |
| `MF` | Saint Martin |
| `MQ` | Martinique |
| `MT` | Malta |
| `NL` | The Netherlands |
| `PL` | Poland |
| `PT` | Portugal |
| `RE` | Réunion |
| `RO` | Romania |
| `SE` | Sweden |
| `SI` | Slovenia |
| `SK` | Slovakia |
| `YT` | Mayotte |
This field has the same value as the `ip.geoip.is_in_european_union` field, which is deprecated. The `ip.geoip.is_in_european_union` field is still available for new and existing rules, but you should use the `ip.src.is_in_european_union` field instead.
_GeoIP is the registered trademark of MaxMind, Inc._
- name: raw.http.request.full_uri
data_type: String
categories: [Request, URI, Raw fields]
keywords: [request, uri, url, raw, client, visitor]
summary: The raw full URI as received by the web server without any transformation.
description: |-
The value will not include the `#fragment` part, which is not sent to web servers.
This is the raw field version of the [`http.request.full_uri`](/ruleset-engine/rules-language/fields/reference/http.request.full_uri/) field. Raw fields, prefixed with `raw.`, preserve original request values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
**Note**: This raw field may include some basic normalization done by Cloudflare's HTTP server. However, this can change in the future.
- name: raw.http.request.uri
data_type: String
categories: [Request, URI, Raw fields]
keywords:
[request, uri, url, path, query, query string, raw, client, visitor]
summary: The URI path and query string of the request without any transformation.
description: |-
This is the raw field version of the [`http.request.uri`](/ruleset-engine/rules-language/fields/reference/http.request.uri/) field. Raw fields, prefixed with `raw.`, preserve original request values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
**Note**: This raw field may include some basic normalization done by Cloudflare's HTTP server. However, this can change in the future.
- name: raw.http.request.uri.path
data_type: String
categories: [Request, URI, Raw fields]
keywords: [request, uri, url, path, raw, client, visitor]
summary: The raw URI path of the request without any transformation.
description: |-
This is the raw field version of the [`http.request.uri.path`](/ruleset-engine/rules-language/fields/reference/http.request.uri.path/) field. Raw fields, prefixed with `raw.`, preserve original request values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
**Note**: This raw field may include some basic normalization done by Cloudflare's HTTP server. However, this can change in the future.
- name: raw.http.request.uri.path.extension
data_type: String
categories: [Request, URI, Raw fields]
keywords: [request, uri, url, path, raw, client, visitor]
summary: The raw file extension in the request URI path without any transformation.
description: |-
This is the raw field version of the [`http.request.uri.path.extension`](/ruleset-engine/rules-language/fields/reference/http.request.uri.path.extension/) field. Raw fields, prefixed with `raw.`, preserve original request values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
- name: raw.http.request.uri.query
data_type: String
categories: [Request, URI, Raw fields]
keywords: [request, uri, url, query, query string, raw, client, visitor]
summary: The entire query string without the `?` delimiter and without any transformation.
description: |-
This is the raw field version of the [`http.request.uri.query`](/ruleset-engine/rules-language/fields/reference/http.request.uri.query/) field. Raw fields, prefixed with `raw.`, preserve original request values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
**Note**: This raw field may include some basic normalization done by Cloudflare's HTTP server. However, this can change in the future.
- name: raw.http.response.headers
data_type: Map<Array<String>>
categories: [Response, Headers, Raw fields]
keywords: [response, raw]
summary: The HTTP response headers without any transformation represented as a Map (or associative array).
description: |-
This is the raw field version of the [`http.response.headers`](/ruleset-engine/rules-language/fields/reference/http.response.headers/) field. Raw fields, prefixed with `raw.`, preserve original response values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
example_value: |-
{"server": ["nginx"]}
example_block: |-
any(raw.http.response.headers["server"][*] == "nginx")
- name: raw.http.response.headers.names
data_type: Array<String>
categories: [Response, Headers, Raw fields]
keywords: [response, raw]
summary: The names of the headers in the HTTP response without any transformation.
description: |-
This is the raw field version of the [`http.response.headers.names`](/ruleset-engine/rules-language/fields/reference/http.response.headers.names/) field. Raw fields, prefixed with `raw.`, preserve original response values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
example_value: |-
["content-type"]
example_block: |-
any(raw.http.response.headers.names[*] == "content-type")
- name: raw.http.response.headers.values
data_type: Array<String>
categories: [Response, Headers, Raw fields]
keywords: [response, raw]
summary: The values of the headers in the HTTP response without any transformation.
description: |-
This is the raw field version of the [`http.response.headers.values`](/ruleset-engine/rules-language/fields/reference/http.response.headers.values/) field. Raw fields, prefixed with `raw.`, preserve original response values for later evaluations. These fields are immutable during the entire request evaluation workflow, and they are not affected by the actions of previously matched rules.
example_value: |-
Example 1: ["application/json"]
Example 2: ["This header value is longer than 10 bytes"]
example_block: |-
# Example 1: Check for specific header value.
any(raw.http.response.headers.values[*] == "application/json")
# Example 2: Match requests according to the specified operator and the length/size entered for the header value.
any(len(raw.http.response.headers.values[*])[*] gt 10)
- name: ssl
data_type: Boolean
categories: [Request]
keywords: [request, tls, https, client, visitor]
summary: Returns `true` when the HTTP connection to the client is encrypted.
- name: cf.api_gateway.auth_id_present
data_type: Boolean
categories: [Request]
keywords: [request, session, api shield, client, visitor]
plan_info_label: Enterprise add-on
summary: Indicates whether the request contained an API session authentication token, as defined by API Shield's saved [session identifiers](/api-shield/get-started/#session-identifiers).
- name: cf.api_gateway.request_violates_schema
data_type: Boolean
categories: [Request]
keywords: [request, api shield, client, visitor]
summary: Indicates whether the request [violated the schema](/api-shield/security/schema-validation/) assigned to the respective saved endpoint.
- name: cf.api_gateway.fallthrough_detected
data_type: Boolean
categories: [Request]
keywords: [request, api shield, client, visitor]
summary: Indicates whether the request matched a saved endpoint in [Endpoint Management](/api-shield/management-and-monitoring/).
- name: cf.bot_management.verified_bot
data_type: Boolean
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: Indicates whether the request originated from a known good bot or crawler.
description: |-
Provides the same information as [`cf.client.bot`](/ruleset-engine/rules-language/fields/reference/cf.client.bot/).
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
- name: cf.verified_bot_category
data_type: String
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
summary: Provides the type and purpose of a verified bot.
description: |-
For more details, refer to [Verified bot categories](/bots/concepts/bot/verified-bots/#categories).
- name: cf.bot_management.score
data_type: Number
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: Represents the likelihood that a request originates from a bot using a score from 1–99.
description: |-
A low score indicates that the request comes from a bot or an automated agent. A high score indicates that a human issued the request.
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
- name: cf.bot_management.static_resource
data_type: Boolean
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: Indicates whether static resources should be included when you create a rule using [`cf.bot_management.score`](/ruleset-engine/rules-language/fields/reference/cf.bot_management.score/).
description: |-
For more details, refer to [Static resource protection](/bots/additional-configurations/static-resources/).
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
- name: cf.bot_management.ja3_hash
data_type: String
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: Provides an SSL/TLS fingerprint to help you identify potential bot requests.
description: |-
For more details, refer to [JA3/JA4 Fingerprint](/bots/additional-configurations/ja3-ja4-fingerprint/).
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
- name: cf.bot_management.ja4
data_type: String
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: Provides an SSL/TLS fingerprint to help you identify potential bot requests.
description: |-
For more details, refer to [JA3/JA4 Fingerprint](/bots/additional-configurations/ja3-ja4-fingerprint/).
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
- name: cf.bot_management.js_detection.passed
data_type: Boolean
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: Indicates whether the visitor has previously passed a JS Detection.
description: |-
For more details, refer to [JavaScript detections](/bots/additional-configurations/javascript-detections/).
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
- name: cf.bot_management.detection_ids
data_type: Array<Number>
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
plan_info_label: Enterprise add-on
summary: List of IDs that correlate to the Bot Management heuristic detections made on a request.
description: |-
Use this field to explicitly match a specific heuristic or to exclude a heuristic in a rule. You can have multiple heuristic detections on the same request.
Requires a Cloudflare Enterprise plan with [Bot Management](/bots/plans/bm-subscription/) enabled.
example_block: |-
any(cf.bot_management.detection_ids[*] eq 33554817)
- name: cf.client.bot
data_type: Boolean
categories: [Request, Bots]
keywords: [request, bots, client, visitor]
summary: Indicates whether the request originated from a known good bot or crawler.
description: |-
Provides the same information as [`cf.bot_management.verified_bot`](/ruleset-engine/rules-language/fields/reference/cf.bot_management.verified_bot/).
- name: cf.edge.server_ip
data_type: IP address
categories: [Request]
keywords: [request, cloudflare, client, visitor]
summary: Represents the global network's IP address to which the HTTP request has resolved.
description: |-
This field is only meaningful for [BYOIP customers](/byoip/).
- name: cf.edge.server_port
data_type: Number
categories: [Request]
keywords: [request, cloudflare, client, visitor]
summary: Represents the port number at which the Cloudflare global network received the request.
description: |-
Use this field to filter traffic on a specific port. The value is a port number in the range 1–65535.
- name: cf.hostname.metadata
data_type: String
categories: [Request]
keywords: [request, cloudflare, saas, platforms, client, visitor]
summary: Returns the string representation of the per-hostname [custom metadata](/cloudflare-for-platforms/cloudflare-for-saas/domain-support/custom-metadata/) JSON object set by SSL for SaaS customers.
- name: cf.random_seed
data_type: Bytes
categories: [Request]
keywords: [request, cloudflare, client, visitor]
summary: Returns per-request random bytes that you can use in the [`uuidv4()`](/ruleset-engine/rules-language/functions/#uuidv4) function.
- name: cf.ray_id
data_type: String
categories: [Request]
keywords: [request, cloudflare, client, visitor]
summary: The Ray ID of the current request.
description: |-
A [Ray ID](/fundamentals/reference/cloudflare-ray-id/) is an identifier given to every request that goes through Cloudflare.
- name: cf.threat_score
data_type: Number
categories: [Request]
keywords: [request, cloudflare, score, client, visitor]
summary: Represents a Cloudflare threat score.
description: |-
Previously, a threat score represented a Cloudflare threat score from 0–100, where 0 indicated low risk. Now, the threat score is always `0` (zero).
- name: cf.tls_cipher
data_type: String
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The cipher for the connection to Cloudflare.
example_value: |-
"AES128-SHA256"
- name: cf.tls_client_auth.cert_revoked
data_type: Boolean
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: Indicates whether the request presented a valid but revoked client certificate.
description: |-
When `true`, the [`cf.tls_client_auth.cert_verified`](/ruleset-engine/rules-language/fields/reference/cf.tls_client_auth.cert_verified/) field is also `true`.
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
- name: cf.tls_client_auth.cert_verified
data_type: Boolean
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: Returns `true` when a request presents a valid client certificate.
description: |-
Also returns `true` when a request includes a valid certificate that was revoked (refer to [`cf.tls_client_auth.cert_revoked`](/ruleset-engine/rules-language/fields/reference/cf.tls_client_auth.cert_revoked/)).
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
- name: cf.tls_client_auth.cert_presented
data_type: Boolean
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: Returns `true` when a request presents a certificate (valid or not).
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
- name: cf.tls_client_auth.cert_issuer_dn
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Distinguished Name (DN) of the Certificate Authority (CA) that issued the certificate included in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"CN=Access Testing CA,OU=TX,O=Access Testing,L=Austin,ST=Texas,C=US"
- name: cf.tls_client_auth.cert_subject_dn
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Distinguished Name (DN) of the owner (or requester) of the certificate included in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"CN=James Royal,OU=Access Admins,O=Access,L=Austin,ST=Texas,C=US"
- name: cf.tls_client_auth.cert_issuer_dn_rfc2253
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Distinguished Name (DN) of the Certificate Authority (CA) that issued the certificate in the request in [RFC 2253](https://datatracker.ietf.org/doc/html/rfc2253) format.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"CN=Access Testing CA,OU=TX,O=Access Testing,L=Austin,ST=Texas,C=US"
- name: cf.tls_client_auth.cert_subject_dn_rfc2253
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Distinguished Name (DN) of the owner (or requester) of the certificate in the request in [RFC 2253](https://datatracker.ietf.org/doc/html/rfc2253) format.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"CN=James Royal,OU=Access Admins,O=Access,L=Austin,ST=Texas,C=US"
- name: cf.tls_client_auth.cert_issuer_dn_legacy
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Distinguished Name (DN) of the Certificate Authority (CA) that issued the certificate in the request in a legacy format.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"/C=US/ST=Texas/L=Austin/O=Access Testing/OU=TX/CN=Access Testing CA"
- name: cf.tls_client_auth.cert_subject_dn_legacy
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Distinguished Name (DN) of the owner (or requester) of the certificate in the request in a legacy format.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"/C=US/ST=Texas/L=Austin/O=Access/OU=Access Admins/CN=James Royal"
- name: cf.tls_client_auth.cert_serial
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: Serial number of the certificate in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"527E0F20A20EA2A4146C78390F34CE7AF0878CA4"
- name: cf.tls_client_auth.cert_issuer_serial
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: Serial number of the direct issuer of the certificate in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"2688201DBA77402EA87118876F2E1B24CF8B0395"
- name: cf.tls_client_auth.cert_fingerprint_sha256
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The SHA-256 fingerprint of the certificate in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"af363dc85bc942a892d3cee9796190fdb36d89cd588a4f1cb17c74a943439714"
- name: cf.tls_client_auth.cert_fingerprint_sha1
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The SHA-1 fingerprint of the certificate in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"933ad5282c560ae3f482a43ecd73bc9de878a190"
- name: cf.tls_client_auth.cert_not_before
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The certificate in the request is not valid before this date.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"Mar 21 13:35:00 2022 GMT"
- name: cf.tls_client_auth.cert_not_after
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The certificate in the request is not valid after this date.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"Mar 21 13:35:00 2023 GMT"
- name: cf.tls_client_auth.cert_ski
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Subject Key Identifier (SKI) of the certificate in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"27846FAE6EAC4A8DAD9101B519CF1EB460242831"
- name: cf.tls_client_auth.cert_issuer_ski
data_type: String
categories: [Request, mTLS]
keywords: [request, ssl, mtls, client, visitor]
summary: The Subject Key Identifier (SKI) of the direct issuer of the certificate in the request.
description: |-
This field is only filled in if the request includes a client certificate for [mTLS authentication](/ssl/client-certificates/enable-mtls/).
example_value: |-
"8204924CF49D471E855862706D889F58F6B784D3"
- name: cf.tls_client_extensions_sha1
data_type: String
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The SHA-1 fingerprint of TLS client extensions, encoded in Base64 using big-endian format.
description: For the little-endian version of this field, refer to [`cf.tls_client_extensions_sha1_le`](/ruleset-engine/rules-language/fields/reference/cf.tls_client_extensions_sha1_le/).
example_value: |-
"OWFiM2I5ZDc0YWI0YWYzZmFkMGU0ZjhlYjhiYmVkMjgxNTU5YTU2Mg=="
- name: cf.tls_client_extensions_sha1_le
data_type: String
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The SHA-1 fingerprint of TLS client extensions, encoded in Base64 using little-endian format.
description: For the big-endian version of this field, refer to [`cf.tls_client_extensions_sha1`](/ruleset-engine/rules-language/fields/reference/cf.tls_client_extensions_sha1/).
example_value: |-
"7zIpdDU5pvFPPBI2/PCzqbaXnRA="
- name: cf.tls_ciphers_sha1
data_type: String
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The SHA-1 fingerprint of the client TLS cipher list in received order, encoded in Base64 using big-endian format.
example_value: |-
"GXSPDLP4G3X+prK73a4wBuOaHRc="
- name: cf.tls_client_hello_length
data_type: Number
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The length of the client hello message sent in a [TLS handshake](https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake).
description: |-
Specifically, the length of the bytestring of the client hello.
example_value: |-
508
- name: cf.tls_client_random
data_type: String
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The value of the 32-byte random value provided by the client in a [TLS handshake](https://www.cloudflare.com/learning/ssl/what-happens-in-a-tls-handshake), encoded in Base64.
description: |-
For more details, refer to [RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446#section-4.1.2).
example_value: |-
"YWJjZA=="
- name: cf.tls_version
data_type: String
categories: [Request, SSL/TLS]
keywords: [request, ssl, tls, client, visitor]
summary: The TLS version of the connection to Cloudflare.
example_value: |-
"TLSv1.2"
- name: cf.edge.client_tcp
data_type: Boolean
categories: [Request]
keywords: [request, tcp, network, client]
summary: Indicates if the request was made over TCP.
example_value: |-
true
- name: cf.edge.client_quic
data_type: Boolean
categories: [Request]
keywords: [request, quic, network, client, http3]
summary: Indicates if the request was made over QUIC.
example_value: |-
true
- name: cf.edge.l4.delivery_rate
data_type: Integer
categories: [Request]
keywords:
[request, l4, delivery rate, bandwidth, network, performance, transport]
summary: The most recent data delivery rate estimate for the client connection, in bytes per second.
description: |-
Reports the transport layer delivery rate estimate measured by Cloudflare for the connection between the client and Cloudflare, in bytes per second.
This metric reflects the rate at which data is being successfully delivered over the connection. It can be used to build rules that respond to connection quality, such as serving lower-quality content to clients on slow connections.
Returns `0` when L4 statistics are not available for the request.
example_value: |-
123456
example_block: |-
# Match requests where the delivery rate is below 100 KB/s
cf.edge.l4.delivery_rate < 100000
- name: cf.timings.client_tcp_rtt_msec
data_type: Number
categories: [Request]
keywords: [request, timing, tcp, rtt, performance, latency]
summary: The smoothed TCP round-trip time (RTT) from client to Cloudflare in milliseconds.
example_value: |-
20
- name: cf.timings.client_quic_rtt_msec
data_type: Integer
categories: [Request]
keywords: [request, timing, quic, rtt, performance, latency, http3]
summary: The smoothed QUIC round-trip time (RTT) from client to Cloudflare in milliseconds.
description: |-
Reports the smoothed round-trip time for the QUIC connection between the client and Cloudflare, in milliseconds.
This field is only populated for QUIC (HTTP/3) connections. For TCP connections, the value is `0`. Use [`cf.edge.client_quic`](/ruleset-engine/rules-language/fields/reference/cf.edge.client_quic/) to check if the connection used QUIC before evaluating this field.
example_value: |-
42
example_block: |-
# Match QUIC requests where the RTT exceeds 200 ms
cf.edge.client_quic and cf.timings.client_quic_rtt_msec > 200
- name: cf.timings.edge_msec
data_type: Integer
categories: [Request]
keywords: [request, timing, edge, performance]
summary: The time spent processing a request within the Cloudflare global network in milliseconds.
description: |-
The value corresponds to the time interval between when the Cloudflare edge server accepted the HTTP request headers for processing and just before the HTTP response headers were available to be sent to the client.
The value does not include:
- The time spent forwarding the request to the origin server (refer to [`cf.timings.origin_ttfb_msec`](/ruleset-engine/rules-language/fields/reference/cf.timings.origin_ttfb_msec/)).
- The network transfer time to the client.
example_value: |-
28
example_block: |-
# Matches requests where Cloudflare's edge processing time was greater than 500 milliseconds
cf.timings.edge_msec > 500
- name: cf.timings.origin_ttfb_msec
data_type: Integer
categories: [Request]
keywords: [request, timing, ttfb, performance, origin, latency]
summary: The round-trip time (RTT) between the Cloudflare global network and the origin server in milliseconds.
description: |-
This field provides insight into origin server latency. It represents the Time to First Byte (TTFB) from the perspective of the Cloudflare edge server.
This metric includes both the network RTT and the time the origin server spent handling the request.
If the request was served from the Cloudflare CDN cache and the origin server was not reached, the value of this field will be `0`.
example_value: |-
150
example_block: |-
# Matches requests where the origin response time (TTFB) was greater than 2 seconds:
cf.timings.origin_ttfb_msec > 2000
- name: cf.timings.worker_msec
data_type: Integer
categories: [Request]
keywords: [request, timing, workers, performance, latency]
summary: The time spent executing a Cloudflare Worker in milliseconds.
description: |-
This field provides the wall-clock time that a Cloudflare Worker spent handling the request, measured in milliseconds.
Use this field to identify slow Worker executions, set up alerts for performance regressions, or add Worker execution time as a request header using Transform Rules for downstream observability.
If the request did not invoke a Worker, the value of this field will be `0`.
example_value: |-
12
example_block: |-
# Matches requests where the Worker execution time exceeded 500 milliseconds
cf.timings.worker_msec > 500