Sep-04-2021, 08:55 AM
(Sep-01-2021, 02:20 PM)DeaD_EyE Wrote: Hi DeaD_EyE,
Sorry for such a delay in replying.
In more testing of the original suggestion, I found that I was still having an issue (my oversight- but still very grateful he took time out to help me)
After some hours I figured out it was something to do with error handling, but didn't know how to apply that. I looked up lots of various posts but I couldn't make it work for myself.
Then came across your solution here that you posted...
This works perfectly- thank you so much.
There's no way I'd would have known how to apply it this elegantly- with error handling messaging included! I will try and study this more and understand what some of it's inclusions mean- like file=sys.stderr for example.
Thanks again and have a great weekend.
Some improvements + error corrections + info about urls..
import random import sys import time import requests # Take the right protocol # "testurl.com" is not a valid URL # "http://testurl.com" is valid url = "https://python-forum.io/thread-34789.html" # set headers # this was missing in the code example and this was causing the # NameError headers = {} # Proxies must also start with http:// or https:// proxies = [ "http://173.68.59.131:3128", "http://64.124.38.139:8080", "http://69.197.181.202:3128", ] random.shuffle(proxies) result = None for proxy in proxies: try: response = requests.get( url, headers=headers, proxies={"https": proxy}, timeout=3 ) except (requests.ReadTimeout, requests.ConnectionError): print("Got timeout", file=sys.stderr) continue except Exception as e: print("Contact the programer", repr(e), file=sys.stderr) else: print(response.status_code, file=sys.stderr) # be a good shell citizen # don't print debugging data to stdout if response.status_code == 200: result = response.text # break out of loop if result was found break if result is None: print("No success", file=sys.stderr) else: time.sleep(2) print(result)