Ikal. Periksa pengalihan

8

Mari kita anggap kita memiliki 3 tautan: tautan1, tautan2, tautan3. link1 redirect ke link2 dan link2 redirect ke link3. Jadi bagaimana melihatnya dengan ikal?

ipeacocks
sumber

Jawaban:

13

Anda dapat melihat tajuk HTML menggunakan -I. Jika redirect adalah meta-refresh, itu akan muncul dengan cara ini sebagai header.

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

Jika pengalihan terjadi melalui PHP, Anda dapat mendeteksi ini dengan membandingkan ke mana peramban berjalan vs kemana perginya actaully ... Ada banyak cara untuk melakukan ini dengan Python, JS, dll. Satu proyek yang mungkin menarik untuk Anda adalah phantomjs, browser tanpa kepala yang dapat skrip.

nandoP
sumber
5

Coba ini :

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

Atau menggunakan :

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
Gilles Quenot
sumber
4

Dari 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)

Jadi mungkin curl -w "%{redirect_url}" link1akan memberi Anda url pengalihan pertama.

Mungkin sesuatu seperti ini cocok untuk Anda:

URL="http://google.com"
while [ -n "${URL}" ]
do
    echo $URL
    URL=$(curl -sw "\n\n%{redirect_url}" "${URL}" | tail -n 1)
done
FloHimself
sumber