Requests.get ne fonctionne pas avec mes adresses proxies

Résolu/Fermé
Utilisateur anonyme - Modifié le 25 juin 2020 à 10:37
yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 - 25 juin 2020 à 14:02
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

yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 Ambassadeur 1 555
25 juin 2020 à 12:00
bonjour, as-tu essayé de faire d'abord un code plus simple, pour vérifier que tu utilises correctement requests.get?
0
Utilisateur anonyme
Modifié le 25 juin 2020 à 12:16
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
0
yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 555 > Utilisateur anonyme
Modifié le 25 juin 2020 à 12:24
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)
0
Utilisateur anonyme > yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024
25 juin 2020 à 12:34
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 ?
0
yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 555 > Utilisateur anonyme
25 juin 2020 à 13:46
peut-être en adaptant l'exemple à ta situation?
0
Utilisateur anonyme
25 juin 2020 à 13:57
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])
0
yg_be Messages postés 23358 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 novembre 2024 1 555
25 juin 2020 à 14:02
la prochaine fois, fais print(rep) ou de rep.text.
0