# TCP/IP Device Filter

Source: https://docs.evomi.com/proxy-instructions/residential-proxies/expert-settings/device_filter/

**Note:** Expert settings are only available for **Core Residential Proxies**.

Evomi Residential Proxies offer a TCP/IP device filter that lets you select IPs by TCP fingerprint. This is useful for testing platform-specific behavior and maintaining consistency with a selected device type.

## How TCP Fingerprinting Works
The TCP fingerprint is determined by analyzing characteristics of the device's TCP/IP stack, including:
- TCP window size
- Initial packet sequence numbers
- TCP options and their order
- Time-to-Live (TTL) values

These characteristics vary between operating systems and device types. For example, Windows devices have different default TCP configurations than Unix-based systems or Apple devices.

## Using the Device Filter
Append `_device-<type>` to your proxy password to filter IPs by device type. Valid options:
- `_device-windows`: Filters IPs with Windows TCP fingerprints
- `_device-unix`: Filters IPs from Unix-based systems (Linux/Android)
- `_device-apple`: Filters IPs from Apple devices (iOS/macOS)

## Examples
Below are implementation examples using CURL, Python, and JavaScript:

#### CURL

  ```bash
curl -x http://rp.evomi.com:1000 -U testuser:testpassword_device-windows https://ip.evomi.com/s
```

#### Python

  ```Python
import requests

proxy_pass = "testpassword_device-unix"
proxy_url = f"http://testuser:{proxy_pass}@rp.evomi.com:1000"

proxies = {
  "http": proxy_url,
}
response = requests.get("https://ip.evomi.com/s", proxies=proxies)
print(response.text)
```

#### JavaScript

```JavaScript
const fetch = require('node-fetch');

const proxyPass = 'testpassword_device-apple';
const proxyUrl = `http://testuser:${proxyPass}@rp.evomi.com:1000`;
const url = 'https://ip.evomi.com/s';

fetch(url, { proxy: proxyUrl })
  .then(res => res.text())
  .then(body => console.log(body));
```

**Note:** The device parameter is an extra feature. Using it will incur additional bandwidth consumption. You can see the exact extra usage history in the dashboard and in the Generator.

Combine device filtering with other parameters like `fraudscore` for precise targeting. Example:  
`testpassword_country-US_device-windows_fraudscore-0`

For quick configuration, use our [Proxy Generator](https://docs.evomi.com/proxy-instructions/proxy-generator/) to generate authenticated proxy URLs with the fraudscore parameter.
