Speichern Sie den folgenden Inhalt unter dem Dateinamen get_redirect.py.
get_redirect.py
import sys
import urllib.request
#Handler-Klasse, die nicht umleitet
class NoRedirectHandler(urllib.request.HTTPRedirectHandler):
# HTTPRedirectHandler.redirect_Anfrage überschreiben
def redirect_request(self, req, fp, code, msg, hdrs, newurl):
self.newurl = newurl #Halten Sie die Umleitungsziel-URL gedrückt
return None
#Funktion zum Abrufen der Umleitungsziel-URL
def get_redirect_url(src_url):
#Legen Sie Handler fest, die nicht umleiten
no_redirect_handler = NoRedirectHandler()
opener = urllib.request.build_opener(no_redirect_handler)
try:
with opener.open(src_url) as res:
return None #Es war eine URL, die nicht umgeleitet wurde
except urllib.error.HTTPError as e:
if hasattr(no_redirect_handler, "newurl"):
return no_redirect_handler.newurl #Gibt die Umleitungsziel-URL zurück
else:
raise e #Neu werfen, da es sich um eine Ausnahme handelt, die nicht umgeleitet wurde
#Befehlszeilenargumente abrufen
src_url = sys.argv[1]
#Umleitungsziel-URL abrufen
redirect_url = get_redirect_url(src_url)
#Ausgabe-Umleitungsziel-URL ausgeben
if redirect_url is not None:
print(redirect_url)
Ausführungsbeispiel.
$ 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
Speichern Sie den folgenden Inhalt unter dem Dateinamen get_redirect.py.
get_redirect.py
import sys
import urllib.request
#Funktion zum Abrufen der Umleitungsziel-URL
def get_redirect_url(src_url):
with urllib.request.urlopen(src_url) as res:
url = res.geturl() #Holen Sie sich die endgültige URL
if src_url == url:
return None #Nicht umgeleitet, da es mit der angegebenen URL identisch ist
else:
return url #Umleitung, da sie sich von der angegebenen URL unterscheidet
#Befehlszeilenargumente abrufen
src_url = sys.argv[1]
#Umleitungsziel-URL abrufen
redirect_url = get_redirect_url(src_url)
#Ausgabe-Umleitungsziel-URL ausgeben
if redirect_url is not None:
print(redirect_url)
Ausführungsbeispiel. In der vereinfachten Version wird eine Anforderung an die Umleitungsziel-URL gesendet, und bei einer mehrstufigen Umleitung wird die endgültige URL ausgegeben.
$ 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