Xoăn. Kiểm tra chuyển hướng


8

Giả sử rằng chúng ta có 3 liên kết: link1, link2, link3. link1 chuyển hướng đến link2 và link2 chuyển hướng đến link3. Vậy làm thế nào để thấy điều đó với curl?

Câu trả lời:


13

Bạn có thể thấy các tiêu đề HTML bằng cách sử dụng -I. Nếu chuyển hướng là một meta-refresh, nó sẽ theo cách này như là một tiêu đề.

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

Nếu chuyển hướng đang xảy ra thông qua PHP, bạn có thể phát hiện điều này bằng cách so sánh nơi trình duyệt đang đi so với nơi nó diễn ra ... Có rất nhiều cách để làm điều này với Python, JS, v.v. Một dự án có thể thú vị với bạn là ph Phantomjs, một trình duyệt không đầu có kịch bản.


5

Thử cái này :

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

Hoặc sử dụng :

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

Từ 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)

Vì vậy, có thể curl -w "%{redirect_url}" link1sẽ cung cấp cho bạn url chuyển hướng đầu tiên.

Có lẽ một cái gì đó như thế này làm việc cho bạn:

URL="http://google.com"
while [ -n "${URL}" ]
do
    echo $URL
    URL=$(curl -sw "\n\n%{redirect_url}" "${URL}" | tail -n 1)
done
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.