10% off ALL new Proxies – CODE: 10pro

Notte Proxy Setup: Route Sessions via German Mobile IPs

Notte Proxy Setup: Route Sessions via German Mobile IPs

The One Thing Most Notte Proxy Guides Get Wrong

Notte is a browser platform for AI agents — you open a managed cloud session, then run an agent (Notte's own or your framework) on top of it. Most proxy guides stop at its built-in residential proxy (proxies=True) and never show the setup people actually search for: attaching your own proxy so the session egresses through an IP you control.

That is the thing they get wrong. There are two different proxy concepts on a Notte session:

  • proxies=True — routes through Notte's own managed residential proxy (best-effort US-based). You don't pick the IP.
  • proxies=[ExternalProxy(...)] — routes through a proxy you supply. You pick the IP.

This guide is the second one: bring-your-own proxy, using your German mobile endpoint. The built-in default is best-effort US-based, so if you need a German IP specifically, an ExternalProxy is the way to get one. You get a real German mobile IP on a managed cloud browser, without running the browser yourself — and without the rotating-pool machinery, because a dedicated endpoint rotates on demand at the proxy, not per request in code.


Before You Start

You need four values from your GermanProxy.io account:

  • Host and port of your endpoint
  • Username and password

You'll also need a Notte API key and the Python SDK:

pip install notte-sdk

The examples use PROXY_HOST, PORT, USER and PASS as placeholders — replace them with your own. A single dedicated endpoint is enough; you do not need a rotating pool for a session. ExternalProxy takes an HTTP(S) server, so use your HTTP endpoint, which is the simplest credentialed path. New to routing an agent through a proxy at all? Start with the broader AI browser-agents guide.


Step 1 — Open a Session With Your External Proxy

Build an ExternalProxy carrying your German mobile endpoint and pass it in the proxies list to client.Session. This is the BYO-proxy path — not proxies=True, which would use Notte's built-in US-based residential proxy instead of your IP:

from notte_sdk import NotteClient
from notte_sdk.types import ExternalProxy, NotteProxy

client = NotteClient()

proxy = ExternalProxy(
    server="http://PROXY_HOST:PORT",
    username="USER",
    password="PASS",
)

proxies: list[NotteProxy | ExternalProxy] = [proxy]

with client.Session(proxies=proxies) as session:
    # everything on this session egresses through your German mobile endpoint
    ...

Notte validates the proxy connection at session-creation time, so if the host, port or credentials are wrong you get an error here rather than a silent fallback to another IP. The ExternalProxy server is an HTTP(S) value with the scheme, and credentials go in username / password.


Step 2 — Verify the IP Before You Scale

Confirm the session is actually on a German mobile IP before you build anything on top of it. Have the session open an IP-echo endpoint and read the result — the exact call depends on how you drive the session (Notte agent step, or a CDP-attached driver), but the check is the same: fetch https://api.ipify.org?format=json through the session and inspect the returned address.

with client.Session(proxies=proxies) as session:
    # drive the session to load the IP-echo page, then read the body:
    # it should return a German mobile IP, not your own or a datacenter one
    ...

If it returns a datacenter address or your own, re-check the server, username and password on the ExternalProxy — a session opened with proxies=True (or none) would run on Notte's built-in IP, not yours. For a fuller checklist, see testing your proxy setup.


Step 3 — Check for WebRTC and DNS Leaks

A cloud browser routes HTTP through your proxy, but Chromium has two side channels that can expose the underlying address:

  • WebRTC can surface an IP via ICE candidates outside the proxy tunnel — see what a WebRTC leak is.
  • DNS can resolve names outside the tunnel, so the target sees a different resolver — see what a DNS leak is.

A real German mobile IP only helps if nothing else leaks past it. Verify both before you turn a single session into a fleet.


Sticky Sessions vs. Rotation

With a dedicated German endpoint you control the IP at the proxy, not in your code:

  • Sticky session: one Notte session on your endpoint keeps the same German mobile IP across a multi-step task — that IP stability is what stops the target re-challenging the browser on every action.
  • Rotation on demand: when you want a fresh IP, trigger rotation at the proxy and open a new session. There's no per-request IP pool to manage.

This is why a dedicated endpoint keeps the code small: no rotation list, no health-checking, no retry-on-dead-IP loop. See sticky sessions and IP rotation explained and dedicated vs shared mobile proxy.

Note the data budget: a cloud browser loads full pages with images and scripts, and a single session rendering rich pages can move several hundred MB an hour. A GermanProxy.io endpoint comes with a fair-use allowance of 20 GB/day, so size your concurrency to that rather than assuming headroom that isn't promised. We do not advertise "unlimited" traffic, because fair-use limits apply in practice and honesty is the point.


Why a Mobile IP for Notte at All

A Notte session is a Chromium instance making many dependent requests as an agent works through a task, and the egress IP decides how the target treats it. Datacenter ranges — including many cloud-browser IPs — are widely distrusted, so even a well-behaved agent can hit friction. Attaching a real German mobile IP as an external proxy rides on carrier-grade NAT (CGNAT), the same shared-IP space thousands of ordinary phone users sit behind, which is why it tends to carry higher IP reputation on German platforms.

For the trade-offs against other IP types, see mobile vs residential vs datacenter proxy and what is a mobile proxy.


Scrape Responsibly

A mobile proxy improves reliability for authorized automation — it is not a tool to defeat access controls, anti-bot systems, or platform rules, and we don't position it as an "undetectable" agent. Keep your Notte sessions clean and defensible:

  1. Respect each site's terms and its robots.txt; collect only public data you're permitted to use. Web scraping for public data is generally lawful in the EU, but context matters — see is web scraping legal in the EU.
  2. Throttle with human-reasonable delays between agent actions so you don't overload a target server.
  3. Collect only what you need, and handle any personal data in line with the GDPR.
  4. Be honest about who you are — don't impersonate a service or misuse a target's security mechanisms.

[!IMPORTANT]
GermanProxy.io is an EU-based provider with a full imprint, clear acceptable-use rules, and a real abuse-reporting process. The service is IT routing — a host, port and credentials — not hardware you operate, and not framed as anonymity. Whether mobile proxies are lawful to use: are mobile proxies legal.


FAQ

How do I add a custom proxy to a Notte session?

Build an ExternalProxy(server="http://PROXY_HOST:PORT", username="USER", password="PASS") and pass it in the proxies list to client.Session(proxies=[proxy]). The session then egresses through your German mobile endpoint instead of Notte's built-in proxy.

What's the difference between ExternalProxy and Notte's built-in proxies?

proxies=True activates Notte's own managed residential proxy (best-effort US-based). An ExternalProxy routes the session through a proxy you supply — your German mobile endpoint — so you control the outbound IP and its location.

Which SDK does Notte use for a custom proxy?

Notte's session SDK is Python. Import NotteClient and ExternalProxy from notte_sdk, then open a session with client.Session(proxies=[proxy]) as a context manager. The proxy is validated at session-creation time.

Which proxy schemes does Notte accept for a custom proxy?

ExternalProxy takes an HTTP or HTTPS server value, e.g. "http://PROXY_HOST:PORT", plus username and password. Your GermanProxy.io endpoint gives you an HTTP endpoint (alongside SOCKS5 and OpenVPN), which is the simplest credentialed path here. Background: SOCKS5 vs HTTP proxy.

Should I check for WebRTC and DNS leaks on Notte?

Yes. A cloud browser can still expose the underlying address through WebRTC or resolve DNS outside the tunnel — see what a WebRTC leak is and what a DNS leak is. Have the session open an IP-echo page to confirm a German mobile IP, then run a leak test before you rely on the setup.

Do I need a rotating pool for Notte sessions?

No. A single dedicated German mobile endpoint is usually the better fit. A stateful, multi-step session needs a stable IP (sticky session) so it is not re-challenged on every action; rotate on demand at the proxy between tasks, not mid-task. See sticky sessions and IP rotation explained.


Related guides

CTA

Run your Notte sessions on real German mobile IPs. Get your German mobile endpoint — HTTP/SOCKS5/OpenVPN, sticky sessions, on-demand rotation, fair-use 20 GB/day, from a transparent EU provider. Browse the plans to get started. New to the topic? Start with the AI-agents use case or what is a mobile proxy.


Get a German mobile proxy: Real 4G/5G IPs from Germany, fair-use 20 GB/day — browse German mobile proxy plans or start small with a shared 5G proxy.

Telegram Support
Nach oben scrollen