Ce Python serait vous suggérons de vérifier whois enregistrements de base de données?
Je vais essayer d'obtenir un webservice en place et en cours d'exécution qui en a réellement besoin de vérifier les bases de données whois. Ce que je suis en train de faire maintenant, c'est moche et j'aimerais éviter autant que je peux: j'appelle gwhois de commande et d'analyser sa sortie. Laid.
J'ai fait quelques recherches pour essayer de trouver une pythonic façon d'effectuer cette tâche. En général, je suis tout à fait beaucoup de rien - cet ancien de la liste de discussion lien a un moyen de vérifier si le domaine existe. Tout à fait pas ce que je cherchais... Mais bon, c'était la meilleure réponse de Google m'a donné - tout le reste est juste un tas de unanwsered questions.
Vous avez réussi à obtenir un peu de méthode, et en cours d'exécution? Je serais très reconnaissant de quelques conseils, ou devrais-je viens de faire l'opensource-chemin, asseyez-vous et le code quelque chose par moi-même? 🙂
OriginalL'auteur kender | 2008-09-08
Vous devez vous connecter pour publier un commentaire.
Il n'y a rien de mal avec l'aide d'un utilitaire de ligne de commande pour faire ce que vous voulez. Si vous mettez une belle enveloppe le service, vous pouvez mettre en œuvre à l'intérieur comme vous le souhaitez! Par exemple:
Maintenant, si vous roulez votre propre en utilisant urllib, enroulé autour d'un utilitaire de ligne de commande (comme vous le faites), ou de l'importation d'un tiers de la bibliothèque et de l'utiliser (comme vous êtes en train de dire), cette interface reste la même.
Cette approche n'est généralement pas considéré comme laid, parfois de commande utilitaires de faire ce que vous voulez et vous devriez être en mesure de tirer parti de leur. Si la vitesse finit par être un goulot d'étranglement, votre abstraction rend le processus de commutation à un natif de Python de la mise en œuvre transparente à votre code client.
Praticité beats pureté -- c'est ce qui est Pythonic. 🙂
Avec une bonne abstraction de la barrière, vous pouvez la mettre en œuvre chaque fois que c'est pratique! "C'est maintenant mieux que jamais, Bien que jamais est souvent mieux que droit." 🙂
cela rend plus facile! Vous avez juste à basculer à l'intérieur de gwhois à Xwhois. Si vous voulez aussi garder à l'ancienne mise en œuvre vous pouvez prolonger la vieille classe et de substituer, par exemple, la méthode de recherche.
Ce qui est totalement faux! Ne pas shell à exécuter whois de commande. À tout le moins, il suffit d'ouvrir un socket TCP vers le port 43 et lire RFC3912. Cela n'a rien à voir avec l'aspect pratique, l'exécution d'une commande shell comme ça ne fera que générer un tas de sécurité et de performance. Ce n'est pas la bonne façon de résoudre le problème.
OriginalL'auteur cdleary
Regardez ceci:
http://code.google.com/p/pywhois/
pywhois - module Python pour récupérer les informations WHOIS de domaines
Objectif:
- Créer un simple importables module Python qui permettra de produire analysé les données WHOIS pour un domaine donné.
- Capable d'extraire des données pour tous les populaire Tld (com, org, net, ...)
- Requête à un serveur WHOIS directement au lieu de passer par un intermédiaire du service web comme beaucoup d'autres le font.
- Fonctionne avec Python 2.4+ et sans dépendances externes
Exemple:
les autres qui veulent savoir ce) voir: stackoverflow.com/questions/11578943/error-when-using-pywhois
OriginalL'auteur Aziz
Trouve cette question dans le processus de ma propre recherche pour un python whois bibliothèque.
Ne sais pas que je suis d'accord avec cdleary de la réponse que l'utilisation d'une bibliothèque qui s'enroule
une commande est toujours la meilleure façon de le faire - mais je peux voir ses raisons pourquoi il a dit cela.
Pro: cmd-ligne whois gère tout le travail dur (prise d'appels, analyse, etc)
Con: pas portable; module peut ne pas fonctionner en fonction sous-jacente whois de commande.
Plus lent, car l'exécution d'une commande et les plus susceptibles de shell en outre le whois de commande.
Affectés si UNIX (Windows), les différents UNIX, âgés UNIX, ou
âgées whois de commande
Je suis à la recherche d'un whois module qui permet de gérer whois IP recherches et je ne suis pas intéressé pour le codage de mon propre whois client.
Voici les modules que j'ai (légèrement) a essayé de sortir et de plus d'informations à ce sujet:
pywhoisapi:
BulkWhois
pywhois:
python-base de données whois:
whoisclient - fourchette de python-whois
Mise à jour: j'ai fini par utiliser pywhoisapi pour le reverse IP des recherches que je faisais
OriginalL'auteur Lars Nordin
Voici le whois client ré-implémenté en Python:
http://code.activestate.com/recipes/577364-whois-client/
OriginalL'auteur Boden Garman
Je ne sais pas si gwhois fait quelque chose de spécial avec le serveur de sortie; toutefois, vous pouvez simplement vous connecter à la base de données whois server sur le port whois (43), envoyez votre requête, de lire toutes les données dans la réponse et les analyser. Pour rendre la vie un peu plus facile, vous pouvez utiliser le telnetlib.Telnet classe (même si le protocole whois est beaucoup plus simple que le protocole telnet) au lieu de la plaine de sockets.
Les parties difficiles:
Ils sont à la fois partie du problème. Dans mon cas, c'était assez dur de trouver le bon (autoritaire), whois server dans tous les cas. L'analyse des données n'était pas aussi difficile, car nous nous sommes intéressés essentiellement dans le parent de sous-réseaux, donc avec un peu de trial&erreur nous ont été faites. Ne peut pas fournir le code, si, désolé.
OriginalL'auteur tzot
Une autre façon de le faire est d'utiliser
urllib2
module pour analyser une autre page du service whois (de nombreux sites comme celui-ci existent). Mais c'est encore plus d'un hack pour ce que vous faites maintenant, et vous donnerait une dépendance sur tout le whois site que vous avez choisi, ce qui est mauvais.Je déteste dire ça, mais si vous voulez vous ré-implémenter
whois
dans votre programme (qui serait de ré-inventer la roue), l'exécution dewhois
sur le système d'exploitation et l'analyse de la sortie (c'est à dire ce que vous faites maintenant) semble être la bonne façon de le faire.OriginalL'auteur Justin Standard
L'analyse d'une autre page web woulnd pas aussi mauvais (en supposant que leur code html woulnd pas être très mauvais), mais il serait réellement m'attacher à eux - s'ils sont en bas, je suis en bas 🙂
En fait j'ai trouvé quelques vieux projet sur sourceforge: rwhois.py. Ce qui m'effraie un peu, c'est que leur dernière mise à jour est à partir de 2003. Mais, il peut sembler comme un bon endroit pour commencer la remise à plat de ce que je fais maintenant... eh Bien, je sentais obligued à poster le lien de ce projet de toute façon, juste pour référence ultérieure.
OriginalL'auteur kender
si elle renvoie un gaierror vous savez sais que c'est pas enregistrée auprès de DNS
OriginalL'auteur Ryan
ici est un prêt-à-utiliser la solution qui fonctionne pour moi; écrit en Python 3.1 (lorsque le portage de Py2.x, prenez soin de les octets /texte Unicode distinctions). votre point d'accès unique est la méthode
DRWHO.whois()
, qui attend un nom de domaine pour être passé; il va alors essayer de résoudre le nom à l'aide du fournisseur configuré commeDRWHO.whois_providers[ '*' ]
(une solution plus complète pourrait différencier les fournisseurs selon le domaine de premier niveau).DRWHO.whois()
sera de retour un dictionnaire avec une seule entréetext
, qui contient le texte de la réponse renvoyée par le serveur WHOIS. Encore une fois, une solution plus complète serait alors essayer et d'analyse du texte (qui doit être effectuée séparément pour chaque fournisseur, il n'y a pas de format standard) et le retour à un format plus structuré (par exemple, définir un indicateuravailable
qui indique si le domaine est disponible). amusez-vous!OriginalL'auteur flow