Redirect User to different Website Based on Location (IP Address)
Asked Answered
P

5

10

How to redirect user visiting my sites to location specific sites using the IP Address.
I have 3 location specific sites.
1. Europe.
2. US.
3. Asia.
In short I wanted to find the location of the client using his IP Address. The solution needs to use Google APIs.

Polanco answered 13/12, 2012 at 10:22 Comment(9)
You'll need to give us more info on that. What server you using. From where to where you want to redirect. You want to redirect according to IP of by browser preferences, ....Moriahmoriarty
Getting the user IP and then redirecting since you din't include any server side language. Use google for such silly things.King
Do you really need to redirect with javascript? Wouldn't it be better to redirect on server side?Moriahmoriarty
I'm planning to redirect using javascript. I tried googling and ended up google.load for location. all the examples are about showing location specific maps. nowhere I got example of getting location.Polanco
I am working on fatwire my javascript knowledge is limited. I thought javascript provides a feasible solution in this senario. correct me if i'm wrongPolanco
Is this a question or are you just sharing your solution?Toneytong
I have no idea about the solution when i wrote the question. Got this code from one of my friend. Shared it for everyone's help.Polanco
sorry, what I meant when I said "you can't trust this", was that any location detection by IP sometimes (can I say often?) fails, for various reasons, so do not trust it (any solution) to the point of not letting users change their place manually.Factious
Another overlooked answer can be found here: #48485457Dubitable
P
13

I got the solution using "google.loader.ClientLocation"
here is the code for that if somebody needs it.

Check this JSFiddle

http://jsfiddle.net/kvishnudev/7Ut65/1/

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
<head>
    <title>Get web visitor's location</title>
    <meta name="robots" value="none" />
</head>
<body>
<div id="yourinfo"></div>
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABQIAAAAp04yNttlQq-7b4aZI_jL5hQYPm-xtd00hTQOC0OXpAMO40FHAxQMnH50uBbWoKVHwgpklyirDEregg"></script>
<script type="text/javascript">
var Continent = {"AD":"Europe","AE":"Asia","AF":"Asia","AG":"North America","AI":"North America","AL":"Europe","AM":"Asia","AN":"North America","AO":"Africa","AQ":"Antarctica","AR":"South America","AS":"Australia","AT":"Europe","AU":"Australia","AW":"North America","AZ":"Asia","BA":"Europe","BB":"North America","BD":"Asia","BE":"Europe","BF":"Africa","BG":"Europe","BH":"Asia","BI":"Africa","BJ":"Africa","BM":"North America","BN":"Asia","BO":"South America","BR":"South America","BS":"North America","BT":"Asia","BW":"Africa","BY":"Europe","BZ":"North America","CA":"North America","CC":"Asia","CD":"Africa","CF":"Africa","CG":"Africa","CH":"Europe","CI":"Africa","CK":"Australia","CL":"South America","CM":"Africa","CN":"Asia","CO":"South America","CR":"North America","CU":"North America","CV":"Africa","CX":"Asia","CY":"Asia","CZ":"Europe","DE":"Europe","DJ":"Africa","DK":"Europe","DM":"North America","DO":"North America","DZ":"Africa","EC":"South America","EE":"Europe","EG":"Africa","EH":"Africa","ER":"Africa","ES":"Europe","ET":"Africa","FI":"Europe","FJ":"Australia","FK":"South America","FM":"Australia","FO":"Europe","FR":"Europe","GA":"Africa","GB":"Europe","GD":"North America","GE":"Asia","GF":"South America","GG":"Europe","GH":"Africa","GI":"Europe","GL":"North America","GM":"Africa","GN":"Africa","GP":"North America","GQ":"Africa","GR":"Europe","GS":"Antarctica","GT":"North America","GU":"Australia","GW":"Africa","GY":"South America","HK":"Asia","HN":"North America","HR":"Europe","HT":"North America","HU":"Europe","ID":"Asia","IE":"Europe","IL":"Asia","IM":"Europe","IN":"Asia","IO":"Asia","IQ":"Asia","IR":"Asia","IS":"Europe","IT":"Europe","JE":"Europe","JM":"North America","JO":"Asia","JP":"Asia","KE":"Africa","KG":"Asia","KH":"Asia","KI":"Australia","KM":"Africa","KN":"North America","KP":"Asia","KR":"Asia","KW":"Asia","KY":"North America","KZ":"Asia","LA":"Asia","LB":"Asia","LC":"North America","LI":"Europe","LK":"Asia","LR":"Africa","LS":"Africa","LT":"Europe","LU":"Europe","LV":"Europe","LY":"Africa","MA":"Africa","MC":"Europe","MD":"Europe","ME":"Europe","MG":"Africa","MH":"Australia","MK":"Europe","ML":"Africa","MM":"Asia","MN":"Asia","MO":"Asia","MP":"Australia","MQ":"North America","MR":"Africa","MS":"North America","MT":"Europe","MU":"Africa","MV":"Asia","MW":"Africa","MX":"North America","MY":"Asia","MZ":"Africa","NA":"Africa","NC":"Australia","NE":"Africa","NF":"Australia","NG":"Africa","NI":"North America","NL":"Europe","NO":"Europe","NP":"Asia","NR":"Australia","NU":"Australia","NZ":"Australia","OM":"Asia","PA":"North America","PE":"South America","PF":"Australia","PG":"Australia","PH":"Asia","PK":"Asia","PL":"Europe","PM":"North America","PN":"Australia","PR":"North America","PS":"Asia","PT":"Europe","PW":"Australia","PY":"South America","QA":"Asia","RE":"Africa","RO":"Europe","RS":"Europe","RU":"Europe","RW":"Africa","SA":"Asia","SB":"Australia","SC":"Africa","SD":"Africa","SE":"Europe","SG":"Asia","SH":"Africa","SI":"Europe","SJ":"Europe","SK":"Europe","SL":"Africa","SM":"Europe","SN":"Africa","SO":"Africa","SR":"South America","ST":"Africa","SV":"North America","SY":"Asia","SZ":"Africa","TC":"North America","TD":"Africa","TF":"Antarctica","TG":"Africa","TH":"Asia","TJ":"Asia","TK":"Australia","TM":"Asia","TN":"Africa","TO":"Australia","TR":"Asia","TT":"North America","TV":"Australia","TW":"Asia","TZ":"Africa","UA":"Europe","UG":"Africa","US":"North America","UY":"South America","UZ":"Asia","VC":"North America","VE":"South America","VG":"North America","VI":"North America","VN":"Asia","VU":"Australia","WF":"Australia","WS":"Australia","YE":"Asia","YT":"Africa","ZA":"Africa","ZM":"Africa","ZW":"Africa"};
    if(google.loader.ClientLocation)
    {
        visitor_lat = google.loader.ClientLocation.latitude;
        visitor_lon = google.loader.ClientLocation.longitude;
        visitor_city = google.loader.ClientLocation.address.city;
        visitor_region = google.loader.ClientLocation.address.region;
        visitor_country = google.loader.ClientLocation.address.country;
        visitor_countrycode = google.loader.ClientLocation.address.country_code;
        if(visitor_countrycode!= null)
        {
                var Cont = Continent[visitor_countrycode];
                //alert(Cont);              
        }

        //
        document.getElementById('yourinfo').innerHTML = '<p>Lat/Lon: ' + visitor_lat + ' / ' + visitor_lon + '</p><p>Location: ' + visitor_city + ', ' + visitor_region +', Continent : ' + Cont + ', ' + visitor_country + ' (' + visitor_countrycode + ')</p>';
    }
    else
    {
        document.getElementById('yourinfo').innerHTML = '<p>Whoops!</p>';
    }
</script>
</body>

Polanco answered 13/12, 2012 at 11:19 Comment(3)
Just remember you CAN'T trust this (or any other method)Factious
Its taking user's IP address and displaying the place.Polanco
this solution does not work in my browser. I get WhoopsPsittacosis
O
4

There are two options:

  1. A backend solution, using Maxmind GeoIP DLL, an IP to country converter: http://dev.maxmind.com/geoip/downloadable.

  2. A frontend solution (The one I know is not free but pretty cheap: http://www.maxmind.com/en/javascript)

Both allow you to transform an IP to country, then you can aggregate country to location.

Once you have the location (Europe, US, Asia) you can then redirect to the appropriate site.

Obduce answered 13/12, 2012 at 10:32 Comment(2)
thanks for the reply I am looking for some google api for the solutionPolanco
My client has some restrictions on usage of apisPolanco
T
3

Here is a very simple and effective solution with much less code: this piece of code makes use of the infamous fetch api in javascript to make a request to a third-party url: https://ipinfo.io/json which return a JSON object of the client's details.

you can decide to put this piece of code in a <script> tag in your header or footer. Or maybe in a file that is later imported.

Happy coding!!!

    fetch('https://ipinfo.io/json').then((res) => {
        res.json().then((data) => {         
            if(data.country === "/*Country Code*/"){
                window.location.href = '/*Redirect URL*/';
           }
        });
    });         
Thurible answered 21/7, 2022 at 14:5 Comment(1)
IPinfo has a blog post about this How to: geolocation-based redirect in JavaScriptLobito
A
1

Dont know If this answers your problem, I wanted to try this using Python, though its been really long time this Question was posted. just to see If I'm thinking in the right way :)

I've a weblog, with most frequent visitors from an IP, I've checked the IP and it belongs to a Consulting company. Finally after through analysis I've 3 different IPs of a Educational Institute, Product Dev company & another consulting company constituting about ~30% each. I wanted to deploy a User specific Page and test it. I was not able to do it for some reasons. Anway sharing is caring.

first get IP,

 import socket
 user_ip= gethostbyname(gethostname())
 IP_cons=xxx  # you can also set IP range in the form of a list
 IP_edu =yyy
 IP_cons2=zzz

 if user_ip ==IP_cons:                # user_ip in IP_cons if lsit of IPs
     <redirect to IP_cons.html>

 elif user_ip == IP_edu:
     redirect to IP_edu.html>

 elif user_ip == IP_cons2:
     redirect to IP_cons2.html>
 else:
     home.html

Thanks.

Anoxia answered 6/2, 2015 at 23:33 Comment(0)
B
0

A possible solution could be as explain here https://medium.com/@ipapi/automatically-redirect-to-country-specific-page-f687e514595e

It will return you country code based on visitor's IP, you can then write your redirection logic based on it.

Batfowl answered 7/8, 2019 at 7:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.