Requests.get ne fonctionne pas avec mes adresses proxies [Résolu]

Signaler
Messages postés
37
Date d'inscription
dimanche 15 décembre 2019
Statut
Membre
Dernière intervention
29 juin 2020
-
Messages postés
11549
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juillet 2020
-
bonjour,

je cherche a savoir si certaines adresse proxy sont fonctionnel ou non en exécutant une requête "get" vers un site qui me retourne mon adresse IP si tout ce passe correctement. malheureusement cela ne ce passe pas comme prévue et l’ensemble de mes proxy sont considéré comme mort méme si certain d'entre eux sont fonctionnel.

def tester(proxies, ip, ref_IPs):
    whitelist = []
    proxy_pool = cycle(proxies)

    for i in range(1, len(proxies)):
        proxy = next(proxy_pool)
        print("                          ", end="\r")
        print("- please wait ", len(proxies)-i, end="\r")
        try:
            rep = requests.get("http://ifconfig.me/ip", proxies={"http": proxy, "https": proxy}, timeout=1, allow_redirects=False)
            if rep.text == ip:
                whitelist.append(ref_IPs[i])
        except:
            pass

    fileCreator(cleaner(whitelist, 1))



la requête fonctionne sans l'argument proxies et les proxies fournie peuvent etre de type http/https ou socks4/socks5.
ils sont formaté de cette manière :
http : http://36.89.194.113:38622
https: https://http:36.89.194.113:38622
socks4: socks4://181.106.229.155:1080
socks5: socks5://181.106.229.155:1080


avez vous une idée de comment corriger cela ? Merci.

2 réponses

Messages postés
11549
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juillet 2020
659
bonjour, as-tu essayé de faire d'abord un code plus simple, pour vérifier que tu utilises correctement requests.get?
Messages postés
37
Date d'inscription
dimanche 15 décembre 2019
Statut
Membre
Dernière intervention
29 juin 2020
2
Oui bien sur.
Ne serais-ce que pour obtenir l'argument IP de ma fonction :

def areyouconnected():
    try:
        rep = requests.get("http://ifconfig.me/ip")
        if rep:
            print("[",  rep.text, "] -> The program has started")
            return rep.text
        else:
            print("You don't seem to be connected to the internet.")
            return 1
    except:
        return 1


le soucis provient réelement de l'argument "proxies" de requests.get. tout le reste me semble correct
Messages postés
11549
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juillet 2020
659 >
Messages postés
37
Date d'inscription
dimanche 15 décembre 2019
Statut
Membre
Dernière intervention
29 juin 2020

bien sûr. peux-tu spécifier explicitement la valeur de l'argument proxies, sans passer par le paramètre proxies, cycle et next?

exemple:
import requests

proxies = {
 “http”: “http://10.10.10.10:8000”,
 “https”: “http://10.10.10.10:8000”,
}
r = requests.get(“http://toscrape.com”, proxies=proxies)
Messages postés
37
Date d'inscription
dimanche 15 décembre 2019
Statut
Membre
Dernière intervention
29 juin 2020
2 >
Messages postés
11549
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juillet 2020

Oui, je viens de refaire le test mais toujours pas de changement :

def tester(proxies, ip, ref_IPs):
    whitelist = []
    proxy_pool = cycle(proxies)

    for i in range(1, len(proxies)):
        proxy = next(proxy_pool)
        print("                          ", end="\r")
        print("- please wait ", len(proxies)-i, end="\r")
        try:
            rep = requests.get("http://ifconfig.me/ip", proxies={"http": "http://10.10.10.10:8000", "https": "http://10.10.10.10:8000"}, timeout=1, allow_redirects=False)
            if rep.text == ip:
                print("passe")
                whitelist.append(ref_IPs[i])
        except:
            pass

    fileCreator(cleaner(whitelist, 1))


un timeout plus long peut il aider ?
Messages postés
11549
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juillet 2020
659 >
Messages postés
37
Date d'inscription
dimanche 15 décembre 2019
Statut
Membre
Dernière intervention
29 juin 2020

peut-être en adaptant l'exemple à ta situation?
Messages postés
37
Date d'inscription
dimanche 15 décembre 2019
Statut
Membre
Dernière intervention
29 juin 2020
2
probléme resolut, une bête erreur de ma part.

if rep.text == ip:
                print("passe")
                whitelist.append(ref_IPs[i])


L’IP obtenue sous couver d'un proxy n'est pas la même que celle de ma machine actuel .

if rep.status_code == 200:
                print("passe")
                whitelist.append(ref_IPs[i])
Messages postés
11549
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
14 juillet 2020
659
la prochaine fois, fais print(rep) ou de rep.text.