Question

Le problème est que urllib à l'aide httplib est Interrogation des enregistrements AAAA.

Je voudrais éviter cela. Y at-il une bonne façon de le faire?

>>> import socket
>>> socket.gethostbyname('www.python.org')
'82.94.164.162'


21:52:37.302028 IP 192.168.0.9.44992 > 192.168.0.1.53: 27463+ A? www.python.org. (32)
21:52:37.312031 IP 192.168.0.1.53 > 192.168.0.9.44992: 27463 1/0/0 A 82.94.164.162 (48)


 python /usr/lib/python2.6/urllib.py -t http://www.python.org >/dev/null 2>&1

 21:53:44.118314 IP 192.168.0.9.40669 > 192.168.0.1.53: 32354+ A? www.python.org. (32)
21:53:44.118647 IP 192.168.0.9.40669 > 192.168.0.1.53: 50414+ AAAA? www.python.org. (32)
21:53:44.122547 IP 192.168.0.1.53 > 192.168.0.9.40669: 32354 1/0/0 A 82.94.164.162 (48)
21:53:44.135215 IP 192.168.0.1.53 > 192.168.0.9.40669: 50414 1/0/0 AAAA[|domain]
Était-ce utile?

La solution

La bonne réponse est:

http://docs.python.org/library/socket.html

La bibliothèque de prise de Python utilise ce qui suit:

socket.socket ([famille [type [proto]]]) Créer un nouveau socket en utilisant la famille d'adresse indiquée, le type de prise et le numéro de protocole. La famille d'adresse doit être AF_INET (par défaut), ou AF_INET6 AF_UNIX. Le type de prise de courant doit être SOCK_STREAM (valeur par défaut), SOCK_DGRAM ou peut-être l'une des autres constantes de SOCK_. Le numéro de protocole est généralement nul et peut être omise dans ce cas.

/* Supported address families. */
#define AF_UNSPEC       0
#define AF_INET         2       /* Internet IP Protocol         */
#define AF_INET6        10      /* IP version 6                 */

Par défaut, il utilise 0 et si vous l'appelez avec 2 il interrogera uniquement pour les enregistrements.

Rappelez-vous la mise en cache des résultats de Resolv dans votre application est une très mauvaise idée. Ne jamais le faire!

Autres conseils

Regardez ici: how-do-i-resolve- un-SRV-fiche en python

Une fois que vous avez résolu le bon d'une adresse IP, l'utiliser dans votre demande, au lieu du dns.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top