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
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] =="