10% off ALL new Proxies – CODE: 10pro

hrequests Proxy Setup: German Mobile IP + Browser TLS

hrequests Proxy Setup: German Mobile IP + Browser TLS

Direct Answer

To use a mobile proxy with hrequests, pass your endpoint to the singular proxy argument as a http://user:pass@host:port string, on hrequests.get or a Session. Combined with a browser profile, that pairs a browser-consistent TLS fingerprint with a real German mobile IP, so the request looks like the ordinary browser it claims to be. Add your host, port, username and password from your account.


The One-Letter Gotcha: proxy, Not proxies

hrequests is a requests-like Python client with one big difference under the hood: it sends traffic through bogdanfinn's tls-client, so it can reproduce a real browser's TLS handshake instead of the tell-tale fingerprint a plain Python client leaves. That makes it a natural fit when a target reads the transport layer.

The gotcha that trips people coming from requests is the proxy argument. Standard requests takes a proxies dictionary; hrequests takes a singular proxy string. Passing a dictionary silently does the wrong thing. Once you know it's one URL string, the rest is straightforward.

And the browser fingerprint is only half the story. hrequests settles how the connection looks; it says nothing about where it comes from. A browser-consistent handshake from a flagged server range is still a request whose two halves disagree — and the disagreement is what stands out. For how that transport fingerprint is read, see TLS fingerprinting with JA3 and JA4. The goal is consistency, not concealment: look like the ordinary browser you are, from an IP that fits.


Install

pip install hrequests

hrequests exposes a requests-style API, so get, post and Session will look familiar.


Before You Start

You will need four values from your GermanProxy.io account:

  • Host and port of your endpoint
  • Username and password

The examples use PROXY_HOST, PORT, USER and PASS as placeholders — replace them with your own. GermanProxy.io supports HTTP, SOCKS5 and OpenVPN, so you can pick whichever your tool prefers.


Step 1 — A Basic GET Through the Proxy

Pass the endpoint as a single proxy string:

import hrequests

PROXY = "http://USER:PASS@PROXY_HOST:PORT"

resp = hrequests.get(
    "https://www.example.de",
    proxy=PROXY,
    timeout=30,
)
print(resp.status_code)
print(resp.text[:200])

Step 2 — Add a Browser Profile

The reason to reach for hrequests is its browser-consistent TLS. Choose the profile with the browser argument:

import hrequests

resp = hrequests.get(
    "https://www.example.de",
    proxy="http://USER:PASS@PROXY_HOST:PORT",
    browser="chrome",
)
print(resp.status_code)

hrequests routes this through tls-client to present the chosen browser's handshake. One rule keeps the request coherent: if you present a Chrome TLS profile, send a matching Chrome User-Agent at the HTTP layer. A handshake that says Chrome paired with a header that says a scripting library reintroduces exactly the contradiction you removed.


Step 3 — Reuse One IP with a Session

For a multi-request flow, set the proxy once on a Session and issue every request through it:

import hrequests

session = hrequests.Session(
    proxy="http://USER:PASS@PROXY_HOST:PORT",
    browser="chrome",
)

r1 = session.get("https://www.example.de/page-1")
r2 = session.get("https://www.example.de/page-2")
print(r1.status_code, r2.status_code)

With one dedicated endpoint, that keeps a sticky session on the same German mobile IP for the whole flow.


Verify the IP First

Before scaling up, request an IP-echo endpoint through the same proxy and confirm the German mobile IP your target actually sees:

import hrequests

resp = hrequests.get("https://api.ipify.org?format=json",
                     proxy="http://USER:PASS@PROXY_HOST:PORT")
print(resp.text)

If it returns your own address, re-check the proxy string. See validating the proxy connection to compare, and if you hit 407, fix 407 proxy authentication required.


Sticky Sessions vs. Rotation

With one dedicated endpoint you control the IP at the proxy, not with a pool:

  • Sticky session: keep the same German mobile IP across a multi-request flow — a reused Session.
  • Rotation on demand: request a fresh IP at the proxy when you want to spread load.

See sticky sessions and IP rotation explained.


Why a Real German Mobile IP

The browser profile settles the transport fingerprint; the IP settles where the request originates. A real German 5G mobile IP is a normal consumer address on a real German mobile network, shared across many everyday users through CGNAT, so its reputation reflects ordinary phone traffic rather than a flagged server range. Paired with a browser-consistent handshake, both stories agree — the whole-request view that how websites detect proxies describes, and why a clean IP reputation matters as much as the TLS layer. For the wider spectrum, see mobile vs residential vs datacenter proxies.


Scrape Responsibly

A browser-consistent client on a clean mobile IP improves reliability for legitimate data collection — it is not a way around access controls or a site's rules. Keep the pipeline defensible:

  1. Respect robots.txt and each site's terms of service.
  2. Send requests at a human-reasonable rate — add delays; do not hammer servers.
  3. Collect only public data you need, and handle any personal data in line with the GDPR.
  4. Keep your User-Agent honest and aligned with the browser profile you present.

For German and EU targets this is our positioning: public data only, polite rates, no storing of personal data. See is web scraping legal in the EU.


FAQ

Is the argument proxy or proxies in hrequests?

Singular — proxy. Unlike the standard requests library, which takes a proxies dictionary, hrequests takes one proxy URL string, http://USER:PASS@PROXY_HOST:PORT, on both hrequests.get and a Session. That single string routes the request through your German mobile endpoint.

How does hrequests produce a browser-consistent TLS fingerprint?

hrequests sends requests through bogdanfinn's tls-client to reproduce a real browser's TLS handshake, and you choose the profile with the browser argument, such as browser="chrome". That aligns your JA3/JA4 fingerprint with a browser instead of a generic HTTP client, at the transport layer.

Do I still need a proxy if hrequests already spoofs browser TLS?

Yes. The browser profile only settles the TLS layer; your IP address is a separate signal. A browser-consistent handshake from a flagged datacenter range is still inconsistent overall. A real German mobile IP gives the network layer the everyday-consumer profile the fingerprint already claims.

Can I reuse one German mobile IP across several hrequests calls?

Yes — create a Session with the proxy once and issue every request through it. With one dedicated endpoint that keeps a sticky session on the same German mobile IP, and you rotate on demand at the proxy when you want a fresh IP rather than juggling a pool.

Does hrequests support SOCKS5?

hrequests documents the HTTP proxy form, http://USER:PASS@PROXY_HOST:PORT, which covers most web work. If you specifically need SOCKS5, GermanProxy.io exposes a SOCKS5 endpoint you can use with a SOCKS-capable client; for hrequests itself, the HTTP endpoint is the reliable choice. See SOCKS5 vs HTTP proxy.

Why pair hrequests with a German mobile IP for German sites?

German sites often serve local language, pricing and availability to domestic visitors. A real German mobile IP makes an hrequests call look like an ordinary German phone on a German network, so you collect the same public view a local user sees — the IP half of a coherent request.


Related guides

CTA

Give your browser-consistent requests an IP that fits. Get your German mobile IP — HTTP/SOCKS5/OpenVPN, sticky sessions, on-demand rotation, fair-use 20 GB/day, from a transparent EU provider. Browse the plans to get started.


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

Telegram Support
Nach oben scrollen