> For the complete documentation index, see [llms.txt](https://clients.medianova.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://clients.medianova.com/products/security/user-agent-acl.md).

# User Agent ACL

Control access to content by allowing or blocking requests based on User-Agent header values.

Control access to CDN-delivered content by matching the `User-Agent` header of incoming requests.

**User Agent ACL** allows or blocks requests based on full or partial `User-Agent` header values. You can configure Whitelist or Blacklist rules and define whether each value is matched exactly or as part of the header.

User Agent ACL is configured per CDN Resource in the [Medianova Control Panel](https://cloud.medianova.com).

## Configure User Agent ACL

{% stepper %}
{% step %}

### Open Security

Open the CDN Resource that you want to configure and select **Security**.
{% endstep %}

{% step %}

### Enable User Agent ACL

Turn on **User Agent ACL**.

<figure><img src="https://542970813-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtK7oIwmhUHdEJcaH4Hx8%2Fuploads%2F8iPKMeMK1igePcK53ocn%2Fimage.png?alt=media&amp;token=4c72550b-9dcb-470f-b4e6-663075a46f42" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select the Mode

Under **Mode**, select how requests matching the configured User-Agent values are handled:

* **Whitelist** — Allow requests matching the configured User-Agent values and deny requests that do not match.
* **Blacklist** — Deny requests matching the configured User-Agent values and allow requests that do not match.
  {% endstep %}

{% step %}

### Select the Match Type

Under **Match**, select how the configured value is compared with the `User-Agent` header:

* **Contains** — Matches when the `User-Agent` header contains the configured value.
* **Exact** — Matches only when the complete `User-Agent` header matches the configured value.
  {% endstep %}

{% step %}

### Add User-Agent Values

Under **User agent**, enter the value that you want to match and select **Add**.

Add additional values as required.
{% endstep %}

{% step %}

### Save the Configuration

Select **Save** in the pending changes bar.

Review the pending changes and confirm the configuration.
{% endstep %}
{% endstepper %}

## How User Agent ACL Works

The CDN evaluates the `User-Agent` header of incoming requests against the configured values.

The resulting behavior depends on the selected **Mode** and **Match** settings:

<table><thead><tr><th width="154.800048828125">Setting</th><th>Behavior</th></tr></thead><tbody><tr><td><strong>Whitelist</strong></td><td>Allows matching User-Agent values and denies values that do not match.</td></tr><tr><td><strong>Blacklist</strong></td><td>Denies matching User-Agent values and allows values that do not match.</td></tr><tr><td><strong>Contains</strong></td><td>Matches the configured value anywhere within the <code>User-Agent</code> header.</td></tr><tr><td><strong>Exact</strong></td><td>Requires the complete <code>User-Agent</code> header to match the configured value.</td></tr></tbody></table>

## Common Use Cases

User Agent ACL can be used to:

* Block requests from specified crawlers or automated clients.
* Restrict access to specified client applications.
* Allow requests only from configured User-Agent values.

## Important Notes

* The `User-Agent` header is supplied by the client and can be modified or spoofed.
* Do not rely on User Agent ACL as the only access control mechanism for sensitive content.
* Choose **Exact** when the complete User-Agent value must match. Use **Contains** when matching part of the header is sufficient.

## Related Concepts

* [IP Restriction](/products/security/ip-restriction.md)
* [Rate Limiting](/products/security/rate-limiting.md)
* [Security](/products/security.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://clients.medianova.com/products/security/user-agent-acl.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
