Vous ouvrez une page via une sortie en Allemagne et voyez de l’anglais. Un collègue ouvre la même adresse et obtient le magasin américain. Vous avez tous les deux utilisé le bon proxy, alors que s’est-il passé ? Les sites web décident rarement de votre pays à partir d’un seul signal. Ils en combinent plusieurs, et l’ordre diffère sur chaque site. Si vous effectuez du contrôle qualité de localisation ou surveillez des pages locales, connaître ces signaux vous évite bien des confusions.
Ce guide couvre les quatre signaux utilisés par les sites, un exemple testé de la façon dont des sites réels les combinent, et comment vérifier un site qui vous intéresse.
Les quatre signaux
| Signal | Ce qu’il décide généralement | Comment vous le contrôlez |
|---|---|---|
| Adresse IP | Le pays, et parfois la langue | Le pays de sortie de votre proxy |
| En-tête Accept-Language | La langue au sein d’un pays | Les paramètres de votre navigateur ou client |
| L’URL | Tout ce qu’elle désigne, prenant le pas sur le reste | L’adresse que vous demandez |
| Un cookie ou un choix enregistré | Ce que vous avez choisi la dernière fois | Effacer les cookies, ou une session neuve |
Certains sites n’utilisent aucun de ces signaux côté serveur, et affichent à la place une page qui vous laisse choisir.
Ce que font les sites réels
Nous avons chargé plusieurs pages connues via des sorties de proxy résidentiel dans différents pays, avec différentes langues de navigateur, le 6 novembre 2026, et avons confirmé chaque pays de sortie séparément. Le script est court et ne nécessite que requests. Les identifiants proviennent de variables d’environnement.
from __future__ import annotations
import os
import re
import requests
GATEWAY = "p.shifter.io:443"
USER, PASSWORD = os.environ["PROXY_USER"], os.environ["PROXY_PASS"]
BROWSER = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/130.0 Safari/537.36")
def visit(url, country, language):
"""Load a URL from an exit in one country with one browser language."""
proxy = f"http://{USER}-country-{country}:{PASSWORD}@{GATEWAY}"
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
s.headers.update({"User-Agent": BROWSER, "Accept-Language": language})
r = s.get(url, timeout=40)
lang = re.search(r'<html[^>]*\blang=["\']?([\w-]+)', r.text, re.I)
return r.url, lang.group(1) if lang else None
CASES = [
# url, exit country, Accept-Language
("https://www.netflix.com/", "us", "en-US"),
("https://www.netflix.com/", "de", "en-US"),
("https://www.netflix.com/", "de", "de-DE"),
("https://www.netflix.com/", "br", "en-US"),
("https://www.google.com/", "us", "en-US"),
("https://www.google.com/", "de", "en-US"),
("https://www.google.com/?hl=en", "de", "en-US"),
("https://www.apple.com/de/", "us", "en-US"),
("https://www.ikea.com/", "de", "de-DE"),
]
if __name__ == "__main__":
for url, country, language in CASES:
for attempt in range(3):
try:
final, lang = visit(url, country, language)
break
except requests.RequestException:
final, lang = "error", None
asked = url.replace("https://www.", "")
got = final.replace("https://www.", "")
print(f"{asked:22} exit {country.upper()} {language:6} -> {got:22} lang={lang}")
Résultat, montrant l’adresse demandée, le pays de sortie et la langue du navigateur, la page atteinte et la langue de cette page :
netflix.com/ exit US en-US -> netflix.com/ lang=en
netflix.com/ exit DE en-US -> netflix.com/de-en/ lang=en
netflix.com/ exit DE de-DE -> netflix.com/de/ lang=de
netflix.com/ exit BR en-US -> netflix.com/br-en/ lang=en
google.com/ exit US en-US -> google.com/ lang=en
google.com/ exit DE en-US -> google.com/ lang=de
google.com/?hl=en exit DE en-US -> google.com/?hl=en lang=en-DE
apple.com/de/ exit US en-US -> apple.com/de/ lang=de-DE
ikea.com/ exit DE de-DE -> ikea.com/ lang=en
Quatre sites, quatre comportements.
Netflix utilise à la fois l’IP et la langue. La sortie a déterminé le chemin du pays et la langue du navigateur a déterminé la variante : une sortie allemande avec un navigateur en anglais a obtenu /de-en/, et avec un navigateur allemand a obtenu /de/. Une sortie brésilienne avec un navigateur en anglais a obtenu /br-en/.
Google conserve une seule URL et suit l’IP pour la langue. Une sortie allemande a obtenu une page en allemand même avec un navigateur en anglais. L’ajout de ?hl=en à l’URL l’a basculée en anglais, donc l’URL a pris le pas sur l’IP.
Apple laisse l’URL décider. Une sortie américaine demandant /de/ a obtenu le site allemand. L’IP ne l’a redirigée nulle part.
IKEA n’a redirigé nulle part. Une sortie allemande avec un navigateur allemand a quand même obtenu la page internationale en anglais, ce qui laisse le choix au visiteur.
Ce que cela signifie pour vos vérifications
- Définissez la sortie et la langue ensemble. Tester un marché allemand avec un navigateur en anglais peut vous donner un mélange qu’aucun visiteur réel ne voit, comme le montre la ligne Netflix. Faites aussi correspondre le fuseau horaire, car certains sites le vérifient.
- Enregistrez l’URL finale. L’adresse demandée et la page atteinte sont souvent différentes. Conservez les deux, afin qu’une redirection ne passe pas inaperçue.
- Repartez de zéro pour chaque marché. Un cookie d’une visite précédente peut prendre le pas sur l’IP. Utilisez une nouvelle session pour chaque pays.
- Ne faites pas confiance à l’URL seule. Sur des sites comme Google, la même URL sert un contenu différent selon l’IP. Sur des sites comme Apple, l’URL décide et l’IP n’a pas d’importance. Testez quel type de comportement vous avez.
- Choisissez la sortie en fonction du visiteur que vous voulez être. Notre article sur le choix d’un pays de sortie couvre les cas où l’emplacement compte et ceux où il ne compte pas.
Si vous gérez le site
Les redirections géographiques peuvent se retourner contre vous. Les recommandations de Google sont d’éviter de rediriger automatiquement les utilisateurs d’une version linguistique vers une autre en fonction de ce que vous pensez être leur langue, car cela peut empêcher les utilisateurs et les moteurs de recherche d’atteindre toutes les versions. Google note également que Googlebot explore généralement depuis des adresses IP américaines et n’envoie pas d’en-tête Accept-Language, donc un site qui adapte son contenu selon l’emplacement peut ne pas voir toutes ses versions indexées.
Le modèle le plus sûr est ce que font la plupart des sites ci-dessus sous une forme ou une autre : des URL séparées par pays ou par langue, une suggestion basée sur les signaux du visiteur, et un moyen simple de changer.
En résumé
L’idée qu’un site web se fait de l’endroit où vous êtes résulte d’un mélange d’IP, de langue du navigateur, d’URL et de mémoire, combinés différemment sur chaque site. Quand une page affiche le mauvais pays, vérifiez ces quatre éléments avant de blâmer le proxy, et quand vous testez, changez un seul signal à la fois afin de savoir lequel le site suit.
Sources et références
- Google Search Central, Managing multi-regional and multilingual sites : developers.google.com
- Google Search Central, How Google crawls locale-adaptive pages : developers.google.com