Expand my Community achievements bar.

SOLVED

Profile Script for IP range

Avatar

Level 2

Hello, 

We are creating an experience where our success metric is time on site.  We have content authors who spend a lot of time on the site reviewing articles and making edits.  We would like to block our content authors from being included into the campaign so the results are not screwed.  My thought was to create a profile script to determine IP address.  We would then use this script to create an audience that targets everyone but those ranges  Could someone please comment on how to set this up?  

Thanks for any assistance.

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi ,

We have to change the syntax a bit. Please use the following code :

var strIp= user.header('x-cluster-client-ip');
 
var res = /^(192.236.17.44)$/.test(strIp);
 
if (res)
{
return "Invalid IP";
}
else
{
return "Valid IP";
}

Please let us know if you have any more queries.

Thanks & Regards

Parit Mittal

View solution in original post

14 Replies

Avatar

Level 10

Hi , 

You can access the IP address of visitor using user.header('x-cluster-client-ip’) in a  profile script. Please see the below profile script code: 

  1. var strIp= user.header('x-cluster-client-ip');
  2.  
  3. var res = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/.test(strIp);
  4.  
  5. if (res)
  6. {
  7. return "Valid IP";
  8. }
  9. else
  10. {
  11. return "Invalid IP";
  12. }

The above code checks whether an IP address is a valid IP address or not on the basis of Regular Expression defined in the script and then returns the Valid or Invalid Ip . In your case , you can create a Regular Expression on the basis of your requirements and then check if the visitor ip address is a valid one or not. 

After All the Set up , You can create an Audience named as "Valid Audience" and add "Visitor Profile" as a rule and then choose the  above created profile script name as the refinement.

Please let us know in case of any more questions or queries.

Thanks & Regards

Parit Mittal

Avatar

Level 2

So in Target Standard, what would be the next step for blocking the IP address of: 192.236.17.44? 

I know I need to create an audience using this profile script but in the dropdown I am not sure what you would choose.  Equals, Contains, Parameter is preset... etc.

Avatar

Level 10

Hi,

If you already know the Ip Address that need to be blocked then , You just have to update the profile script like this :

  1. var strIp= user.header('x-cluster-client-ip');
  2.  
  3. var res = "192.236.17.44";
  4.  
  5. if (res!=strlp)
  6. {
  7. return "Valid IP";
  8. }
  9. else
  10. {
  11. return "Invalid IP";
  12. }

and create an Audience like below :

Thanks & Regards

Parit Mittal

Avatar

Level 2

Says that that the syntax is invalid.  Will not publish to adobe delivery network.

Avatar

Correct answer by
Level 10

Hi ,

We have to change the syntax a bit. Please use the following code :

var strIp= user.header('x-cluster-client-ip');
 
var res = /^(192.236.17.44)$/.test(strIp);
 
if (res)
{
return "Invalid IP";
}
else
{
return "Valid IP";
}

Please let us know if you have any more queries.

Thanks & Regards

Parit Mittal

Avatar

Level 1

Hi Parit, How can you manipulate this scrip to add ranges of IP addresses? 

Avatar

Level 2

Hi Parit,

Can you explain this code. Specially /^(192.236.17.44)$/.test(strIp); part so that I can modify it to enter multiple IP addresses. I am finding it difficult to comprehend this code.

Thanks,

Suchindra Kala

Avatar

Level 1

I've used this in the past for multiple IP addresses:

IP Address Exclusion/Inclusion Script Generator

You can put in ranges or single IPs. Be careful though, if you enter too many, the script breaks with no warning as Target has limits on the length of profile scripts but for some reason it doesn't tell you the limit on save (unless this has changed recently).

Avatar

Level 1

I just had to go through this exercise...see below:

/^(192.236.17.44|192.168.1.1|192.168.5.2)$/.test(strIp);

Separate it by a pipe as an OR statement.

Avatar

Level 1

I don't get it working in Adobe target standard.

Is it normal that in the available tokens I don't see user.header?

user-header.jpg

My audience based on this script doesn't work...

Avatar

Level 1

Here is how mine is set up (bluring out IP's)

screenshot.jpg

I create my audience by saying Visitor Profile; user.isInIpRange contains "webRange" where isInIpRange is the Profile Script and webRange is the value that would be returned in the script. 

Avatar

Level 1

Thanks, everyone for this great info! How do I mention multiple ranges of IPs in the following code?

var res = /^(192.236.17.44)$/.test(strIp);

Can anyone please explain by mentioning 2-3 dummy IP range.

Avatar

Level 5

Multiple full IPs would be
var res = /^(192.236.17.44)$|^(192.236.17.45)$|
^(192.236.17.46)$/.test(strIp);

If you just want to match "starts with" you can drop the "$" at the end

var res = /^(192.236)|^(192.237)|^(192.238)$/.test(strIp);