2013-03-21 26 views
5

Tôi có một đoạn mã được thiết kế để nhận bất kỳ URL nào và trích xuất nó từ web. Cho đến nay nó được làm việc tốt, cho đến khi một người nào đó đã đưa nó URL này:Không thể CURL một tệp từ xa

http://www.aspensurgical.com/static/images/aspen_hill-rom_logo.png

Nếu tôi đánh nó từ trình duyệt của tôi, nó cho thấy tốt. Nhưng khi tôi cố gắng curl nó xuống, tôi nhận được:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>403 Forbidden</title> 
</head><body> 
<h1>Forbidden</h1> 
<p>You don't have permission to access /static/images/aspen_hill-rom_logo.png 
on this server.</p> 
<hr> 
<address> Server at www.aspensurgical.com Port 80</address> 
</body></html> 

Mã CURL Tôi đang sử dụng là:

$ch = curl_init(str_replace(' ', '%20', $url)); 
$fh = fopen($local_file, "w"); 
curl_setopt($ch, CURLOPT_FILE, $fh); 
curl_exec($ch); 
curl_close($ch); 

là máy chủ của họ bằng cách nào đó nhận ra tôi không phải là một trình duyệt thông thường và khởi động tôi ?

Trả lời

8

Họ có kiểm tra useragent để xem bạn là ai. Thêm useragent của trình duyệt bình thường và bạn sẽ ổn thôi.

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0"); 

Đây là ví dụ làm việc trong codepad.

+2

Bạn, thưa ông, xứng đáng một cookie lớn tuyệt vời. Cảm ơn một tấn! – Anthony

+1

bạn có thể giải thích useragent, về chrome, safari và trình duyệt khác không, tại sao chúng ta cần thêm chúng? – Naeem

+0

@Naeem Mỗi trình duyệt gửi chuỗi tác nhân người dùng của riêng mình để xác định chính nó. Các chương trình công cụ tìm kiếm thông thường hiển thị trong chuỗi tác nhân người dùng mà công cụ tìm kiếm mà họ làm việc. Đó là lý do tại sao một số trang web đào sâu vào chuỗi này để xem ai yêu cầu trang. – Ranty

1

Một số máy chủ, để chặn lưu lượng truy cập không cần thiết, chỉ cho phép bất kỳ tải xuống nào từ trình duyệt. Vì vậy, để lừa các máy chủ như vậy, curl có một tùy chọn bổ sung là --user-agent, nó thực hiện thủ thuật nào!

Tôi sử dụng curl từ máy tính windows7, đã cài đặt gow.

Ví dụ

curl --user-agent "Mozilla/4.0" http://www.example.com/archives/abc.txt --output pqr.txt 
Các vấn đề liên quan