Enregistrez le contenu suivant sous le nom de fichier get_redirect.py.
get_redirect.py
import sys
import urllib.request
#Classe de gestionnaire qui ne redirige pas
class NoRedirectHandler(urllib.request.HTTPRedirectHandler):
# HTTPRedirectHandler.redirect_Remplacer la demande
def redirect_request(self, req, fp, code, msg, hdrs, newurl):
self.newurl = newurl #Retenir l'URL de destination de la redirection
return None
#Fonction pour obtenir l'URL de destination de la redirection
def get_redirect_url(src_url):
#Définir des gestionnaires qui ne redirigent pas
no_redirect_handler = NoRedirectHandler()
opener = urllib.request.build_opener(no_redirect_handler)
try:
with opener.open(src_url) as res:
return None #C'était une URL qui ne redirigeait pas
except urllib.error.HTTPError as e:
if hasattr(no_redirect_handler, "newurl"):
return no_redirect_handler.newurl #Renvoie l'URL de destination de la redirection
else:
raise e #Renvoyer car il s'agit d'une exception qui s'est produite autre que la redirection
#Obtenir des arguments de ligne de commande
src_url = sys.argv[1]
#Obtenir l'URL de destination de la redirection
redirect_url = get_redirect_url(src_url)
#URL de destination de la redirection de sortie
if redirect_url is not None:
print(redirect_url)
Exemple d'exécution.
$ python get_redirect.py https://bit.ly/3kmTOkc
https://t.co/yITSBp4ino
$ python get_redirect.py https://t.co/yITSBp4ino
https://qiita.com/niwasawa
$ python get_redirect.py https://qiita.com/niwasawa
Enregistrez le contenu suivant sous le nom de fichier get_redirect.py.
get_redirect.py
import sys
import urllib.request
#Fonction pour obtenir l'URL de destination de la redirection
def get_redirect_url(src_url):
with urllib.request.urlopen(src_url) as res:
url = res.geturl() #Obtenez l'URL finale
if src_url == url:
return None #Non redirigé car il est identique à l'URL spécifiée
else:
return url #Redirection car elle est différente de l'URL spécifiée
#Obtenir des arguments de ligne de commande
src_url = sys.argv[1]
#Obtenir l'URL de destination de la redirection
redirect_url = get_redirect_url(src_url)
#URL de destination de la redirection de sortie
if redirect_url is not None:
print(redirect_url)
Exemple d'exécution. Dans la version simplifiée, une requête est envoyée à l'URL de destination de la redirection, et dans le cas d'une redirection en plusieurs étapes, l'URL finale est sortie.
$ python get_redirect.py https://bit.ly/3kmTOkc
https://qiita.com/niwasawa
$ python get_redirect.py https://t.co/yITSBp4ino
https://qiita.com/niwasawa
$ python get_redirect.py https://qiita.com/niwasawa
Recommended Posts