# Page Shield ## Get Page Shield settings `page_shield.get(PageShieldGetParams**kwargs) -> Setting` **get** `/zones/{zone_id}/page_shield` Fetches the Page Shield settings. ### Parameters - `zone_id: str` Identifier ### Returns - `class Setting: …` - `enabled: bool` When true, indicates that Page Shield is enabled. - `updated_at: str` The timestamp of when Page Shield was last updated. - `use_cloudflare_reporting_endpoint: bool` When true, CSP reports will be sent to https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report - `use_connection_url_path: bool` When true, the paths associated with connections URLs will also be analyzed. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) setting = client.page_shield.get( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(setting.enabled) ``` #### Response ```json { "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "enabled": true, "updated_at": "2022-10-12T17:56:52.083582+01:00", "use_cloudflare_reporting_endpoint": true, "use_connection_url_path": true } } ``` ## Update Page Shield settings `page_shield.update(PageShieldUpdateParams**kwargs) -> PageShieldUpdateResponse` **put** `/zones/{zone_id}/page_shield` Updates Page Shield settings. ### Parameters - `zone_id: str` Identifier - `enabled: Optional[bool]` When true, indicates that Page Shield is enabled. - `use_cloudflare_reporting_endpoint: Optional[bool]` When true, CSP reports will be sent to https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report - `use_connection_url_path: Optional[bool]` When true, the paths associated with connections URLs will also be analyzed. ### Returns - `class PageShieldUpdateResponse: …` - `enabled: bool` When true, indicates that Page Shield is enabled. - `updated_at: str` The timestamp of when Page Shield was last updated. - `use_cloudflare_reporting_endpoint: bool` When true, CSP reports will be sent to https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report - `use_connection_url_path: bool` When true, the paths associated with connections URLs will also be analyzed. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page_shield = client.page_shield.update( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(page_shield.enabled) ``` #### Response ```json { "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": { "enabled": true, "updated_at": "2022-10-12T17:56:52.083582+01:00", "use_cloudflare_reporting_endpoint": true, "use_connection_url_path": true } } ``` ## Domain Types ### Setting - `class Setting: …` - `enabled: bool` When true, indicates that Page Shield is enabled. - `updated_at: str` The timestamp of when Page Shield was last updated. - `use_cloudflare_reporting_endpoint: bool` When true, CSP reports will be sent to https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report - `use_connection_url_path: bool` When true, the paths associated with connections URLs will also be analyzed. ### Page Shield Update Response - `class PageShieldUpdateResponse: …` - `enabled: bool` When true, indicates that Page Shield is enabled. - `updated_at: str` The timestamp of when Page Shield was last updated. - `use_cloudflare_reporting_endpoint: bool` When true, CSP reports will be sent to https://csp-reporting.cloudflare.com/cdn-cgi/script_monitor/report - `use_connection_url_path: bool` When true, the paths associated with connections URLs will also be analyzed. # Policies ## List Page Shield policies `page_shield.policies.list(PolicyListParams**kwargs) -> SyncSinglePage[PolicyListResponse]` **get** `/zones/{zone_id}/page_shield/policies` Lists all Page Shield policies. ### Parameters - `zone_id: str` Identifier ### Returns - `class PolicyListResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.page_shield.policies.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.id) ``` #### Response ```json { "result": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Get a Page Shield policy `page_shield.policies.get(strpolicy_id, PolicyGetParams**kwargs) -> PolicyGetResponse` **get** `/zones/{zone_id}/page_shield/policies/{policy_id}` Fetches a Page Shield policy by ID. ### Parameters - `zone_id: str` Identifier - `policy_id: str` Identifier ### Returns - `class PolicyGetResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) policy = client.page_shield.policies.get( policy_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(policy.id) ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Create a Page Shield policy `page_shield.policies.create(PolicyCreateParams**kwargs) -> PolicyCreateResponse` **post** `/zones/{zone_id}/page_shield/policies` Create a Page Shield policy. ### Parameters - `zone_id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Returns - `class PolicyCreateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) policy = client.page_shield.policies.create( zone_id="023e105f4ecef8ad9ca31a8372d0c353", action="allow", description="Checkout page CSP policy", enabled=True, expression="ends_with(http.request.uri.path, \"/checkout\")", value="script-src 'none';", ) print(policy.id) ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Update a Page Shield policy `page_shield.policies.update(strpolicy_id, PolicyUpdateParams**kwargs) -> PolicyUpdateResponse` **put** `/zones/{zone_id}/page_shield/policies/{policy_id}` Update a Page Shield policy by ID. ### Parameters - `zone_id: str` Identifier - `policy_id: str` Identifier - `action: Optional[Literal["allow", "log", "add_reporting_directives"]]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: Optional[str]` A description for the policy - `enabled: Optional[bool]` Whether the policy is enabled - `expression: Optional[str]` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: Optional[str]` The policy which will be applied ### Returns - `class PolicyUpdateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) policy = client.page_shield.policies.update( policy_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(policy.id) ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "action": "allow", "description": "Checkout page CSP policy", "enabled": true, "expression": "ends_with(http.request.uri.path, \"/checkout\")", "value": "script-src 'none';" }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Delete a Page Shield policy `page_shield.policies.delete(strpolicy_id, PolicyDeleteParams**kwargs)` **delete** `/zones/{zone_id}/page_shield/policies/{policy_id}` Delete a Page Shield policy by ID. ### Parameters - `zone_id: str` Identifier - `policy_id: str` Identifier ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) client.page_shield.policies.delete( policy_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) ``` ## Domain Types ### Policy - `class Policy: …` - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy List Response - `class PolicyListResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy Get Response - `class PolicyGetResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy Create Response - `class PolicyCreateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied ### Policy Update Response - `class PolicyUpdateResponse: …` - `id: str` Identifier - `action: Literal["allow", "log", "add_reporting_directives"]` The action to take if the expression matches - `"allow"` - `"log"` - `"add_reporting_directives"` - `description: str` A description for the policy - `enabled: bool` Whether the policy is enabled - `expression: str` The expression which must match for the policy to be applied, using the Cloudflare Firewall rule expression syntax - `value: str` The policy which will be applied # Connections ## List Page Shield connections `page_shield.connections.list(ConnectionListParams**kwargs) -> SyncSinglePage[Connection]` **get** `/zones/{zone_id}/page_shield/connections` Lists all connections detected by Page Shield. ### Parameters - `zone_id: str` Identifier - `direction: Optional[Literal["asc", "desc"]]` The direction used to sort returned connections. - `"asc"` - `"desc"` - `exclude_cdn_cgi: Optional[bool]` When true, excludes connections seen in a `/cdn-cgi` path from the returned connections. The default value is true. - `exclude_urls: Optional[str]` Excludes connections whose URL contains one of the URL-encoded URLs separated by commas. - `export: Optional[Literal["csv"]]` Export the list of connections as a file, limited to 50000 entries. - `"csv"` - `hosts: Optional[str]` Includes connections that match one or more URL-encoded hostnames separated by commas. Wildcards are supported at the start and end of each hostname to support starts with, ends with and contains. If no wildcards are used, results will be filtered by exact match - `order_by: Optional[Literal["first_seen_at", "last_seen_at"]]` The field used to sort returned connections. - `"first_seen_at"` - `"last_seen_at"` - `page: Optional[str]` The current page number of the paginated results. We additionally support a special value "all". When "all" is used, the API will return all the connections with the applied filters in a single page. This feature is best-effort and it may only work for zones with a low number of connections - `page_url: Optional[str]` Includes connections that match one or more page URLs (separated by commas) where they were last seen Wildcards are supported at the start and end of each page URL to support starts with, ends with and contains. If no wildcards are used, results will be filtered by exact match - `per_page: Optional[float]` The number of results per page. - `prioritize_malicious: Optional[bool]` When true, malicious connections appear first in the returned connections. - `status: Optional[str]` Filters the returned connections using a comma-separated list of connection statuses. Accepted values: `active`, `infrequent`, and `inactive`. The default value is `active`. - `urls: Optional[str]` Includes connections whose URL contain one or more URL-encoded URLs separated by commas. ### Returns - `class Connection: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `domain_reported_malicious: Optional[bool]` - `first_page_url: Optional[str]` - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.page_shield.connections.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.id) ``` #### Response ```json { "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "result": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "added_at": "2021-08-18T10:51:10.09615Z", "first_seen_at": "2021-08-18T10:51:08Z", "host": "blog.cloudflare.com", "last_seen_at": "2021-09-02T09:57:54Z", "url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js", "url_contains_cdn_cgi_path": false, "domain_reported_malicious": false, "first_page_url": "blog.cloudflare.com/page", "malicious_domain_categories": [ "Malware" ], "malicious_url_categories": [ "Malware" ], "page_urls": [ "blog.cloudflare.com/page1", "blog.cloudflare.com/page2" ], "url_reported_malicious": false } ] } ``` ## Get a Page Shield connection `page_shield.connections.get(strconnection_id, ConnectionGetParams**kwargs) -> Connection` **get** `/zones/{zone_id}/page_shield/connections/{connection_id}` Fetches a connection detected by Page Shield by connection ID. ### Parameters - `zone_id: str` Identifier - `connection_id: str` Identifier ### Returns - `class Connection: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `domain_reported_malicious: Optional[bool]` - `first_page_url: Optional[str]` - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) connection = client.page_shield.connections.get( connection_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(connection.id) ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "added_at": "2021-08-18T10:51:10.09615Z", "first_seen_at": "2021-08-18T10:51:08Z", "host": "blog.cloudflare.com", "last_seen_at": "2021-09-02T09:57:54Z", "url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js", "url_contains_cdn_cgi_path": false, "domain_reported_malicious": false, "first_page_url": "blog.cloudflare.com/page", "malicious_domain_categories": [ "Malware" ], "malicious_url_categories": [ "Malware" ], "page_urls": [ "blog.cloudflare.com/page1", "blog.cloudflare.com/page2" ], "url_reported_malicious": false }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Domain Types ### Connection - `class Connection: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `domain_reported_malicious: Optional[bool]` - `first_page_url: Optional[str]` - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` # Scripts ## List Page Shield scripts `page_shield.scripts.list(ScriptListParams**kwargs) -> SyncSinglePage[Script]` **get** `/zones/{zone_id}/page_shield/scripts` Lists all scripts detected by Page Shield. ### Parameters - `zone_id: str` Identifier - `direction: Optional[Literal["asc", "desc"]]` The direction used to sort returned scripts. - `"asc"` - `"desc"` - `exclude_cdn_cgi: Optional[bool]` When true, excludes scripts seen in a `/cdn-cgi` path from the returned scripts. The default value is true. - `exclude_duplicates: Optional[bool]` When true, excludes duplicate scripts. We consider a script duplicate of another if their javascript content matches and they share the same url host and zone hostname. In such case, we return the most recent script for the URL host and zone hostname combination. - `exclude_urls: Optional[str]` Excludes scripts whose URL contains one of the URL-encoded URLs separated by commas. - `export: Optional[Literal["csv"]]` Export the list of scripts as a file, limited to 50000 entries. - `"csv"` - `hosts: Optional[str]` Includes scripts that match one or more URL-encoded hostnames separated by commas. Wildcards are supported at the start and end of each hostname to support starts with, ends with and contains. If no wildcards are used, results will be filtered by exact match - `order_by: Optional[Literal["first_seen_at", "last_seen_at"]]` The field used to sort returned scripts. - `"first_seen_at"` - `"last_seen_at"` - `page: Optional[str]` The current page number of the paginated results. We additionally support a special value "all". When "all" is used, the API will return all the scripts with the applied filters in a single page. This feature is best-effort and it may only work for zones with a low number of scripts - `page_url: Optional[str]` Includes scripts that match one or more page URLs (separated by commas) where they were last seen Wildcards are supported at the start and end of each page URL to support starts with, ends with and contains. If no wildcards are used, results will be filtered by exact match - `per_page: Optional[float]` The number of results per page. - `prioritize_malicious: Optional[bool]` When true, malicious scripts appear first in the returned scripts. - `status: Optional[str]` Filters the returned scripts using a comma-separated list of scripts statuses. Accepted values: `active`, `infrequent`, and `inactive`. The default value is `active`. - `urls: Optional[str]` Includes scripts whose URL contain one or more URL-encoded URLs separated by commas. ### Returns - `class Script: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `cryptomining_score: Optional[int]` The cryptomining score of the JavaScript content. - `dataflow_score: Optional[int]` The dataflow score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `domain_reported_malicious: Optional[bool]` - `fetched_at: Optional[str]` The timestamp of when the script was last fetched. - `first_page_url: Optional[str]` - `hash: Optional[str]` The computed hash of the analyzed script. - `js_integrity_score: Optional[int]` The integrity score of the JavaScript content. - `magecart_score: Optional[int]` The magecart score of the JavaScript content. - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `malware_score: Optional[int]` The malware score of the JavaScript content. - `obfuscation_score: Optional[int]` The obfuscation score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.page_shield.scripts.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.id) ``` #### Response ```json { "result": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "added_at": "2021-08-18T10:51:10.09615Z", "first_seen_at": "2021-08-18T10:51:08Z", "host": "blog.cloudflare.com", "last_seen_at": "2021-09-02T09:57:54Z", "url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js", "url_contains_cdn_cgi_path": false, "cryptomining_score": 1, "dataflow_score": 1, "domain_reported_malicious": false, "fetched_at": "fetched_at", "first_page_url": "blog.cloudflare.com/page", "hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "js_integrity_score": 1, "magecart_score": 1, "malicious_domain_categories": [ "Malware" ], "malicious_url_categories": [ "Malware" ], "malware_score": 1, "obfuscation_score": 1, "page_urls": [ "blog.cloudflare.com/page1", "blog.cloudflare.com/page2" ], "url_reported_malicious": false } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Get a Page Shield script `page_shield.scripts.get(strscript_id, ScriptGetParams**kwargs) -> ScriptGetResponse` **get** `/zones/{zone_id}/page_shield/scripts/{script_id}` Fetches a script detected by Page Shield by script ID. ### Parameters - `zone_id: str` Identifier - `script_id: str` Identifier ### Returns - `class ScriptGetResponse: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `cryptomining_score: Optional[int]` The cryptomining score of the JavaScript content. - `dataflow_score: Optional[int]` The dataflow score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `domain_reported_malicious: Optional[bool]` - `fetched_at: Optional[str]` The timestamp of when the script was last fetched. - `first_page_url: Optional[str]` - `hash: Optional[str]` The computed hash of the analyzed script. - `js_integrity_score: Optional[int]` The integrity score of the JavaScript content. - `magecart_score: Optional[int]` The magecart score of the JavaScript content. - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `malware_score: Optional[int]` The malware score of the JavaScript content. - `obfuscation_score: Optional[int]` The obfuscation score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` - `versions: Optional[List[Version]]` - `cryptomining_score: Optional[int]` The cryptomining score of the JavaScript content. - `dataflow_score: Optional[int]` The dataflow score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `fetched_at: Optional[str]` The timestamp of when the script was last fetched. - `hash: Optional[str]` The computed hash of the analyzed script. - `js_integrity_score: Optional[int]` The integrity score of the JavaScript content. - `magecart_score: Optional[int]` The magecart score of the JavaScript content. - `malware_score: Optional[int]` The malware score of the JavaScript content. - `obfuscation_score: Optional[int]` The obfuscation score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) script = client.page_shield.scripts.get( script_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(script.id) ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "added_at": "2021-08-18T10:51:10.09615Z", "first_seen_at": "2021-08-18T10:51:08Z", "host": "blog.cloudflare.com", "last_seen_at": "2021-09-02T09:57:54Z", "url": "https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js", "url_contains_cdn_cgi_path": false, "cryptomining_score": 1, "dataflow_score": 1, "domain_reported_malicious": false, "fetched_at": "fetched_at", "first_page_url": "blog.cloudflare.com/page", "hash": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "js_integrity_score": 1, "magecart_score": 1, "malicious_domain_categories": [ "Malware" ], "malicious_url_categories": [ "Malware" ], "malware_score": 1, "obfuscation_score": 1, "page_urls": [ "blog.cloudflare.com/page1", "blog.cloudflare.com/page2" ], "url_reported_malicious": false, "versions": [ { "cryptomining_score": 20, "dataflow_score": 1, "fetched_at": "2021-08-18T10:51:08Z", "hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b423", "js_integrity_score": 2, "magecart_score": 10, "malware_score": 5, "obfuscation_score": 1 } ] }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Domain Types ### Script - `class Script: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `cryptomining_score: Optional[int]` The cryptomining score of the JavaScript content. - `dataflow_score: Optional[int]` The dataflow score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `domain_reported_malicious: Optional[bool]` - `fetched_at: Optional[str]` The timestamp of when the script was last fetched. - `first_page_url: Optional[str]` - `hash: Optional[str]` The computed hash of the analyzed script. - `js_integrity_score: Optional[int]` The integrity score of the JavaScript content. - `magecart_score: Optional[int]` The magecart score of the JavaScript content. - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `malware_score: Optional[int]` The malware score of the JavaScript content. - `obfuscation_score: Optional[int]` The obfuscation score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` ### Script Get Response - `class ScriptGetResponse: …` - `id: str` Identifier - `added_at: datetime` - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `url: str` - `url_contains_cdn_cgi_path: bool` - `cryptomining_score: Optional[int]` The cryptomining score of the JavaScript content. - `dataflow_score: Optional[int]` The dataflow score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `domain_reported_malicious: Optional[bool]` - `fetched_at: Optional[str]` The timestamp of when the script was last fetched. - `first_page_url: Optional[str]` - `hash: Optional[str]` The computed hash of the analyzed script. - `js_integrity_score: Optional[int]` The integrity score of the JavaScript content. - `magecart_score: Optional[int]` The magecart score of the JavaScript content. - `malicious_domain_categories: Optional[List[str]]` - `malicious_url_categories: Optional[List[str]]` - `malware_score: Optional[int]` The malware score of the JavaScript content. - `obfuscation_score: Optional[int]` The obfuscation score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `page_urls: Optional[List[str]]` - `url_reported_malicious: Optional[bool]` - `versions: Optional[List[Version]]` - `cryptomining_score: Optional[int]` The cryptomining score of the JavaScript content. - `dataflow_score: Optional[int]` The dataflow score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. - `fetched_at: Optional[str]` The timestamp of when the script was last fetched. - `hash: Optional[str]` The computed hash of the analyzed script. - `js_integrity_score: Optional[int]` The integrity score of the JavaScript content. - `magecart_score: Optional[int]` The magecart score of the JavaScript content. - `malware_score: Optional[int]` The malware score of the JavaScript content. - `obfuscation_score: Optional[int]` The obfuscation score of the JavaScript content. This field has been deprecated in favour of js_integrity_score. # Cookies ## List Page Shield Cookies `page_shield.cookies.list(CookieListParams**kwargs) -> SyncSinglePage[CookieListResponse]` **get** `/zones/{zone_id}/page_shield/cookies` Lists all cookies collected by Page Shield. ### Parameters - `zone_id: str` Identifier - `direction: Optional[Literal["asc", "desc"]]` The direction used to sort returned cookies.' - `"asc"` - `"desc"` - `domain: Optional[str]` Filters the returned cookies that match the specified domain attribute - `export: Optional[Literal["csv"]]` Export the list of cookies as a file, limited to 50000 entries. - `"csv"` - `hosts: Optional[str]` Includes cookies that match one or more URL-encoded hostnames separated by commas. Wildcards are supported at the start and end of each hostname to support starts with, ends with and contains. If no wildcards are used, results will be filtered by exact match - `http_only: Optional[bool]` Filters the returned cookies that are set with HttpOnly - `name: Optional[str]` Filters the returned cookies that match the specified name. Wildcards are supported at the start and end to support starts with, ends with and contains. e.g. session* - `order_by: Optional[Literal["first_seen_at", "last_seen_at"]]` The field used to sort returned cookies. - `"first_seen_at"` - `"last_seen_at"` - `page: Optional[str]` The current page number of the paginated results. We additionally support a special value "all". When "all" is used, the API will return all the cookies with the applied filters in a single page. This feature is best-effort and it may only work for zones with a low number of cookies - `page_url: Optional[str]` Includes connections that match one or more page URLs (separated by commas) where they were last seen Wildcards are supported at the start and end of each page URL to support starts with, ends with and contains. If no wildcards are used, results will be filtered by exact match - `path: Optional[str]` Filters the returned cookies that match the specified path attribute - `per_page: Optional[float]` The number of results per page. - `same_site: Optional[Literal["lax", "strict", "none"]]` Filters the returned cookies that match the specified same_site attribute - `"lax"` - `"strict"` - `"none"` - `secure: Optional[bool]` Filters the returned cookies that are set with Secure - `type: Optional[Literal["first_party", "unknown"]]` Filters the returned cookies that match the specified type attribute - `"first_party"` - `"unknown"` ### Returns - `class CookieListResponse: …` - `id: str` Identifier - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `name: str` - `type: Literal["first_party", "unknown"]` - `"first_party"` - `"unknown"` - `domain_attribute: Optional[str]` - `expires_attribute: Optional[datetime]` - `http_only_attribute: Optional[bool]` - `max_age_attribute: Optional[int]` - `page_urls: Optional[List[str]]` - `path_attribute: Optional[str]` - `same_site_attribute: Optional[Literal["lax", "strict", "none"]]` - `"lax"` - `"strict"` - `"none"` - `secure_attribute: Optional[bool]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) page = client.page_shield.cookies.list( zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) page = page.result[0] print(page.id) ``` #### Response ```json { "result": [ { "id": "023e105f4ecef8ad9ca31a8372d0c353", "first_seen_at": "2021-08-18T10:51:08Z", "host": "blog.cloudflare.com", "last_seen_at": "2021-09-02T09:57:54Z", "name": "session_id", "type": "first_party", "domain_attribute": "cloudflare.com", "expires_attribute": "2021-10-02T09:57:54Z", "http_only_attribute": true, "max_age_attribute": 3600, "page_urls": [ "blog.cloudflare.com/page1", "blog.cloudflare.com/page2" ], "path_attribute": "/", "same_site_attribute": "strict", "secure_attribute": true } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Get a Page Shield cookie `page_shield.cookies.get(strcookie_id, CookieGetParams**kwargs) -> CookieGetResponse` **get** `/zones/{zone_id}/page_shield/cookies/{cookie_id}` Fetches a cookie collected by Page Shield by cookie ID. ### Parameters - `zone_id: str` Identifier - `cookie_id: str` Identifier ### Returns - `class CookieGetResponse: …` - `id: str` Identifier - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `name: str` - `type: Literal["first_party", "unknown"]` - `"first_party"` - `"unknown"` - `domain_attribute: Optional[str]` - `expires_attribute: Optional[datetime]` - `http_only_attribute: Optional[bool]` - `max_age_attribute: Optional[int]` - `page_urls: Optional[List[str]]` - `path_attribute: Optional[str]` - `same_site_attribute: Optional[Literal["lax", "strict", "none"]]` - `"lax"` - `"strict"` - `"none"` - `secure_attribute: Optional[bool]` ### Example ```python import os from cloudflare import Cloudflare client = Cloudflare( api_email=os.environ.get("CLOUDFLARE_EMAIL"), # This is the default and can be omitted api_key=os.environ.get("CLOUDFLARE_API_KEY"), # This is the default and can be omitted ) cookie = client.page_shield.cookies.get( cookie_id="023e105f4ecef8ad9ca31a8372d0c353", zone_id="023e105f4ecef8ad9ca31a8372d0c353", ) print(cookie.id) ``` #### Response ```json { "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "first_seen_at": "2021-08-18T10:51:08Z", "host": "blog.cloudflare.com", "last_seen_at": "2021-09-02T09:57:54Z", "name": "session_id", "type": "first_party", "domain_attribute": "cloudflare.com", "expires_attribute": "2021-10-02T09:57:54Z", "http_only_attribute": true, "max_age_attribute": 3600, "page_urls": [ "blog.cloudflare.com/page1", "blog.cloudflare.com/page2" ], "path_attribute": "/", "same_site_attribute": "strict", "secure_attribute": true }, "success": true, "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ] } ``` ## Domain Types ### Cookie List Response - `class CookieListResponse: …` - `id: str` Identifier - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `name: str` - `type: Literal["first_party", "unknown"]` - `"first_party"` - `"unknown"` - `domain_attribute: Optional[str]` - `expires_attribute: Optional[datetime]` - `http_only_attribute: Optional[bool]` - `max_age_attribute: Optional[int]` - `page_urls: Optional[List[str]]` - `path_attribute: Optional[str]` - `same_site_attribute: Optional[Literal["lax", "strict", "none"]]` - `"lax"` - `"strict"` - `"none"` - `secure_attribute: Optional[bool]` ### Cookie Get Response - `class CookieGetResponse: …` - `id: str` Identifier - `first_seen_at: datetime` - `host: str` - `last_seen_at: datetime` - `name: str` - `type: Literal["first_party", "unknown"]` - `"first_party"` - `"unknown"` - `domain_attribute: Optional[str]` - `expires_attribute: Optional[datetime]` - `http_only_attribute: Optional[bool]` - `max_age_attribute: Optional[int]` - `page_urls: Optional[List[str]]` - `path_attribute: Optional[str]` - `same_site_attribute: Optional[Literal["lax", "strict", "none"]]` - `"lax"` - `"strict"` - `"none"` - `secure_attribute: Optional[bool]`