python_ftw
python_ftw

Reputation: 45

Python requests doesn't change IP

I am currently building a proxy rotator for Python. Everything is running fine so far, except for the fact that despite the proxies, the tracker - pages return my own IP.

I have already read through dozens of posts in this forum. It often says "something is wrong with the proxy in this case".

I have a long list of proxies ( about 600 ) which I test with my method and I made sure when I scrapped them that they were marked either "elite" or "anonymous" before I put them on this list.

So can it be that the majority of free proxies are "junk" when it comes to anonymity or am I fundamentally doing something wrong?

And is there basically a way to find out how the proxy is set regarding anonymity?

Python 3.10.

import requests

headers = {
    "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
}

proxi = {"http": ""}

prox_ping_ready = [173.219.112.85:8080,
43.132.148.107:2080,
216.176.187.99:8886,
193.108.21.234:1234,
151.80.120.192:3128,
139.255.10.234:8080,
120.24.33.141:8000,
12.88.29.66:9080,
47.241.66.249:1081,
51.79.205.165:8080,
63.250.53.181:3128,
160.3.168.70:8080]


ipTracker = ["wtfismyip.com/text", "api.ip.sb/ip", "ipecho.net/plain", "ifconfig.co/ip"]

for element in proxy_ping_ready:
    for choice in ipTracker:
        try:
            proxi["http"] = "http://" + element

            ips = requests.get(f'https://{choice}', proxies=proxi, timeout=1, headers=headers).text

            print(f'My IP address is: {ips}', choice)
        except Exception as e:

            print("Error:", e)

    time.sleep(3)

Output(example):

My IP address is: 89.13.9.135
 api.ip.sb/ip

My IP address is: 89.13.9.135
 wtfismyip.com/text

My IP address is: 89.13.9.135
 ifconfig.co/ip

(Every time my own address).

Upvotes: 0

Views: 890

Answers (2)

Michal Volešíni
Michal Volešíni

Reputation: 111

As James mentioned, you should use also https proxy

proxi["https"] = "http://" + element

If you getting max retries with url it most probably means that the proxy is not working or is too slow and overloaded, so you might increase your timeout.

You can verify if your proxy is working by setting it as env variable. I took one from your list

import os
os.environ["http_proxy"] = "173.219.112.85:8080"
os.environ["https_proxy"] = "173.219.112.85:8080"

and then run your code without proxy settings by changing your request to

ips = requests.get(f'wtfismyip.com/text',  headers=headers).text

Upvotes: 1

James
James

Reputation: 36756

You only set your proxy for http traffic, you need to include a key for https traffic as well.

proxi["http"] = "http://" + element
proxi["https"] = "http://" + element  # or "https://" + element, depends on the proxy

Upvotes: 1

Related Questions