2013-06-19 18 views
29

Khi tôi chạy lệnh này:Sites không chấp nhận sử dụng wget đại lý tiêu đề

wget --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" http://yahoo.com 

... tôi nhận được kết quả này (với không có gì khác trong file):

<!-- hw147.fp.gq1.yahoo.com uncompressed/chunked Wed Jun 19 03:42:44 UTC 2013 --> 

Nhưng khi tôi chạy wget http://yahoo.com không có tùy chọn --user-agent, tôi nhận được toàn bộ trang.

Tác nhân người dùng giống với tiêu đề mà trình duyệt hiện tại của tôi gửi. Lý do tại sao điều này xảy ra? Có cách nào để đảm bảo tác nhân người dùng không bị chặn khi sử dụng wget?

Trả lời

51

Có vẻ như máy chủ Yahoo thực hiện một số phương pháp heuristic dựa trên User-Agent trong trường hợp tiêu đề Accept được đặt thành */*.

Chấp nhận: text/html

đã làm các trick cho tôi.

ví dụ:

wget --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" http://yahoo.com 

Lưu ý: nếu bạn không khai báo Accept tiêu đề sau đó wget tự động thêm Accept:*/* có nghĩa là cho tôi bất cứ điều gì mà bạn có.

+0

Nó không chỉ là Yahoo lọc ra các yêu cầu như thế này - Một cái gì đó để luôn luôn được nhận thức! – user3791372

0

Bạn cần phải đặt cả user-agent và referer:

wget --header="Accept: text/html" --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" --referrer connect.wso2.com http://dist.wso2.org/products/carbon/4.2.0/wso2carbon-4.2.0.zip 
22

Tôi tạo ra một tập tin ~/.wgetrc với nội dung như sau (lấy từ askapache.com nhưng với một user agent mới hơn, bởi vì nếu không nó đã không luôn làm việc):

header = Accept-Language: en-us,en;q=0.5 
header = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
header = Connection: keep-alive 
user_agent = Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0 
referer =/
robots = off 

Bây giờ tôi có thể tải xuống từ hầu hết các trang (chia sẻ tất cả) (chia sẻ tệp).

+0

Điều này làm việc tốt cho tôi. –

Các vấn đề liên quan