Ejemplo n.º 1
0
def handle_redirect(response, host, pagename, cookie=""):
	"""Gere les redirections du type 302 Redirect ou 302 Moved temporarily
	Utile si l'utilisateur entre une url du type http://www.monsite.fr. Ici seul le host est renseigne.
	Suivant la configuration du serveur web, le client peut recevoir un message de redirection
	Arguments : - objet httplib.HTTPResponse : reponse susceptible d'etre une redirection
				- string host : site web
				- string pagename : nom de la page
				- string cookie : cookie d'authentification
	Return : - objet httlib.HTTPResponse : reponse une fois les redirections effectuees
	"""
	while response.status == 302:
		host_pagename = {}
		headers = response.getheaders()
		
		#l'adresse de la redirection se trouve dans le champ location du header HTTP
		new_location = [location for name, location in headers if name == "location"][0]
		intern_or_relative = which_kind_of_link(host, new_location)
		if intern_or_relative == 0 or intern_or_relative == 1:
			host_pagename = handle_html.url_to_host_pagename(new_location)
		elif intern_or_relative == 2:
			host_pagename["host"] = host
			host_pagename["pagename"] = new_location
		elif intern_or_relative == 3:
			host_pagename["host"] = host
			host_pagename["pagename"] = handle_html.get_absolute_path(pagename)+new_location
		else:
			break
		
		response = send_request(host_pagename["host"], host_pagename["pagename"], cookie)
		
	return response
Ejemplo n.º 2
0
def main_http():
	"""Fonction servant a tester le module HTTP_request
	Le code HTML de la page demandee est imprime sur la sortie standard
	"""
	if len(sys.argv) == 2 or len(sys.argv) == 3:
		host_pagename = {}
		host_pagename = handle_html.url_to_host_pagename(sys.argv[1])
		#Sans cookie d'authentification
		if len(sys.argv) == 2:
			response_html = get_html_response(host_pagename["host"], host_pagename["pagename"])
			print response_html	
		#Avec cookie d'authentification
		else:
			response_html = get_html_response(host_pagename["host"], host_pagename["pagename"], sys.argv[2])
			#print response_html
			tree = handle_html.build_tree(response_html)
			handle_html.print_tree(tree)
	else:
		print "== [Utilisation] ./HTTP_request.py URL [Cookie] =="