Curl. Überprüfen Sie die Umleitung


8

Nehmen wir an, wir haben 3 Links: Link1, Link2, Link3. Link1 leitet zu Link2 weiter und Link2 leitet zu Link3 weiter. Wie sieht man das mit Locken?

Antworten:


13

Sie können die HTML-Header mit sehen -I. Wenn es sich bei der Umleitung um eine Meta-Aktualisierung handelt, sollte sie auf diese Weise als Header angezeigt werden.

lamp@oort ~ $ curl -I http://google.com<br>
HTTP/1.1 301 Moved Permanently<br>
Location: http://www.google.com/<br>
Content-Type: text/html; charset=UTF-8<br>
Date: Thu, 21 Nov 2013 14:59:13 GMT<br>
Expires: Sat, 21 Dec 2013 14:59:13 GMT<br>
Cache-Control: public, max-age=2592000<br>
Server: gws<br>
Content-Length: 219<br>
X-XSS-Protection: 1; mode=block<br>
X-Frame-Options: SAMEORIGIN<br>
Alternate-Protocol: 80:quic

Wenn die Umleitung über PHP erfolgt, können Sie dies erkennen, indem Sie vergleichen, wohin der Browser geht und wohin er tatsächlich geht ... Es gibt eine Reihe von Möglichkeiten, dies mit Python, JS usw. zu tun. Ein Projekt, das interessant sein kann Für Sie ist Phantomjs, ein skriptfähiger Browser ohne Kopf.


5

Versuche dies :

for link in link1 link2 link3; do
    curl -Is "$link" | awk '/Location/{print $2}'
done

Oder mit :

for link in link1 link2 link3; do
    printf '%s\n%s\n\n%s\n' 'HEAD / HTTP/1.1' "Host: $link" 'Connexion:close' |
    netcat $link 80 | awk '/Location/{print $2}'
done

4

Von man curl:

   -w, --write-out <format>
          Defines what to display on stdout after a completed and
          successful operation.

          <...>

          redirect_url   When an HTTP request was made without -L to
                         follow redirects, this variable will show the 
                         actual URL a redirect would take you to.
                         (Added in 7.18.2)

Sie erhalten also wahrscheinlich curl -w "%{redirect_url}" link1die erste Umleitungs-URL.

Vielleicht funktioniert so etwas für Sie:

URL="http://google.com"
while [ -n "${URL}" ]
do
    echo $URL
    URL=$(curl -sw "\n\n%{redirect_url}" "${URL}" | tail -n 1)
done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.