Why does python requests module give dynamic ip?

387 Views Asked by At
import requests
from bs4 import BeautifulSoup

url = "http://www.whatsmyip.org"

for x in range(0,5):
    response = requests.get(url).content

    soup = BeautifulSoup(response,'lxml')
    result = soup.findAll('h1')

    for each in result:
        print each.text
        break

Output:
Your IP Address is 19.12.86.57
Your IP Address is 151.138.87.69
Your IP Address is 108.206.165.11
Your IP Address is 148.84.71.226
Your IP Address is 50.201.205.131

When I run this code, I get a dynamic IP every time and not my public IP. Can anyone explain?

1

There are 1 best solutions below

0
On

I think its not about python, but about whatsmyip.org ;) Some method probably in which they detect and try to prevent scripting.

Tried some other website and always got my public IP. Example:

url = "https://www.iplocation.net"

for x in range(0,5):
   response = requests.get(url).content
   soup = BeautifulSoup(response, 'html.parser')
   result = soup.findAll('span')
   for each in result:
        try:
            if each.text[0] in '01234567890':
                print(each.text)
                break
        except:
            continue