Vérification automatique de la disponibilité de noms de domaine

Contenu du snippet

Il utilise le site de l'afnic (afnic.fr) pour vérifier la potentielle disponibilité d'une liste de nom de domaine. [Uniquement valable pour des domaines finissants par un '.fr']

(Gestion des cookies,headers,gzip encoding et CSRF_TOKEN)

Source / Exemple :


#!/usr/bin/env python
# -*- coding: utf8 -*-

import StringIO
import gzip
import urllib
import urllib2
import cookielib
import sys
import os
import time

def login():
    global cp,date1,date2,region
    print "Login & cookie récuperation pour afnic.fr"
    url = "http://www.afnic.fr/fr/produits-et-services/services/whois/"
    opts = {
    }
    headers = {
      'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
      'Accept-Encoding': 'gzip, deflate',
      'Accept-Language': 'fr,en-US;q=0.8,en;q=0.5,fr-FR;q=0.3',
      'Cache-Control': 'max-age=0',
      'Connection':'keep-alive',
      'Host':'www.afnic.fr',
      'Referer':'http://www.afnic.fr/fr/produits-et-services/services/whois/',
      'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0',
    }
    data = urllib.urlencode(opts)
    request = urllib2.Request(url, data, headers)
    cookies = cookielib.CookieJar()
    cookie_handler= urllib2.HTTPCookieProcessor( cookies )
    redirect_handler= urllib2.HTTPRedirectHandler()
    opener = urllib2.build_opener(redirect_handler,cookie_handler)
    response = opener.open(request)
    cookie=response.headers.get('Set-Cookie')
    cookies.extract_cookies(response,request)
    answ=response.read()
    data=StringIO.StringIO(answ)
    try:
		if response.info()['content-encoding']=="gzip":
			gzipper=gzip.GzipFile(fileobj=data)
			answ=gzipper.read()
    except:
		pass
    sid=answ.split('input type="hidden" name="whois[_csrf_token]" value="')[1].split('"')[0]
    return sid,cookie

def post_data(cookie,sid,domainname="cellus"):
	opts={}
	headers = {
      'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0',
      'Accept': 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.9,image/png,*/*;q=0.8',
      'Accept-Encoding': 'gzip, deflate',
      'Accept-Language': 'fr,en-US;q=0.8,en;q=0.5,fr-FR;q=0.3',
      'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
      'Connection': 'keep-alive',
      'Host':'www.afnic.fr',
      'Referer':"http://www.afnic.fr/fr/produits-et-services/services/whois/",
    }
	url="http://www.afnic.fr/fr/produits-et-services/services/whois/?whois%5B_csrf_token%5D="+sid+"&whois%5Bname%5D="+domainname+"&whois%5Bdomains%5D=.fr"
	data = urllib.urlencode(opts)
	request = urllib2.Request(url, data, headers)
	request.add_header('cookie',cookie)
	cookies = cookielib.CookieJar()
	cookie_handler= urllib2.HTTPCookieProcessor( cookies )
	redirect_handler= urllib2.HTTPRedirectHandler()
	opener = urllib2.build_opener(redirect_handler,cookie_handler)
	response = opener.open(request)
	answ=response.read()
	data=StringIO.StringIO(answ)
	try:
		if response.info()['content-encoding']=="gzip":
			gzipper=gzip.GzipFile(fileobj=data)
			answ=gzipper.read()
	except:
		pass
	#with open('temp_info.html','w') as tf:
	#	tf.write(answ)
	if answ.find('<p>Le nom de domaine "<strong>'+domainname+'.fr</strong>" est disponible à l&#039;enregistrement.</p>')>-1:
		answ=True
	else:
		answ=False
	return answ

if __name__ == "__main__":
	domains_list=["codes-sources","cellus","un-domaine-qui-n-est-pas-encore-enregistre","ce-domaine-par-exemple","google"] 	#METTER ICI LA LISTE DES NOMS DE DOMAINE A VERIFIER
	sid,cookie=login()
	print "Verification de la disponibilité de " + str(len(domains_list)) + " nom(s) de domaine."
	for each in domains_list:
		if post_data(cookie,sid,domainname=each)==True:
			print " - '"+each + ".fr' est enregistrable"
		else:
			print " - '"+each + ".fr' est deja enregistré"
		time.sleep(0.25)

Conclusion :


Certe peu utile, mais peut être intéressant pour d'autre usage car il contient des fonctions pour interagir avec un site internet (en gérant les cookies, les headers, l'encodage Gzip pour la réponse, et l'extraction du CSRF_TOKEN)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.