wget --spider: làm thế nào để biết các liên kết bị hỏng đến từ đâu


7

Đôi khi tôi sử dụng chế độ nhện tích hợp của wget để thuận tiện kiểm tra nhanh chóng một trang web địa phương để tìm các liên kết bị hỏng. Sáng nay tôi đã chú ý đến một trang web sản xuất mà chúng tôi vừa mới đưa ra những thay đổi lớn và nó xuất hiện với 3 liên kết bị hỏng, nhưng dường như không thể biết chúng ở đâu! (Nó chỉ nói những gì họ liên kết đến và không có cách liên quan đơn giản nào mà quay lại một trang.)

Các tùy chọn tôi hiện đang sử dụng là wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt. Có ai biết về một tùy chọn mà tôi đang xem, một cách để đọc đầu ra hoặc thậm chí là một thay thế đơn giản cho lệnh này cũng sẽ cho tôi biết tập tin nào liên kết xuất hiện trong (và lý tưởng là một dòng #) không?

wget 

Tôi nhận được điều này trong khi làm việc trên zedboard. ! [nhập mô tả hình ảnh tại đây ] ( i.stack.imgur.com/SkNpQ.png )
Saj

Câu trả lời:


3

Bạn sẽ có thể xem nhật ký máy chủ web, kết hợp với chạy wget. Tìm kiếm 404trong tệp nhật ký và kéo referrertrường. Điều đó sẽ cho bạn biết trang chứa liên kết bị hỏng.

Sau đó, nó chỉ là một vấn đề kiểm tra trang đó cho các liên kết vi phạm.


1
Ý tưởng tốt. Tôi quên tôi đã hỏi điều này ở đây, thực sự! Điều cuối cùng tôi đã làm là sử dụng nó kết hợp với grep trên bản sao trang web cục bộ của tôi (đặc biệt là sử dụng tùy chọn -n để lấy số dòng).

Điều này tốt cho các liên kết nội bộ bị hỏng, nhưng không phải cho các liên kết đến các trang web bên ngoài.
Chiếu phim

3

Một cách tốt (không liên quan đến nhật ký máy chủ web) là sử dụng --debugcờ và grep cho^Referer:

Trên dòng lệnh:

wget -r -nv --spider http://www.domain.com/ 2>&1 | egrep -A 1 '(^---response end---$|^--[0-9]{4}-[0-9]{2}-[0-9]{2}|^[0-9]{4}-[0-9]{2}-[0-9]{2} ERROR|^Referer:|^Remote file does not)'

Bạn có thể thực hiện grepping tương tự trên nhật ký của bạn. Hãy cẩn thận: một số wget không được biên dịch với sự hỗ trợ cho--debug


1
Hoặc đặt tất cả các liên kết bên trong tệp văn bản và sử dụng -ichuyển đổi để kiểm tra điều đó. wget -r -nv --spider -i linkfile 2>&1 | egrep -A 1 '(^---response end---$|^--[0-9]{4}-[0-9]{2}-[0-9]{2}|^[0-9]{4}-[0-9]{2}-[0-9]{2} ERROR|^Referer:|^Remote file does not)'
EsmaeelE
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.