2012-05-24 31 views
6

Tôi đang sử dụng nhiều curl để tìm nạp dữ liệu từ trang web từ xa. Tập lệnh của tôi giống nhưLàm thế nào để đối phó với lỗi CURL 403 bị cấm? bất kỳ giải pháp nào?

foreach ($urls as $i => $url) { 
      $ch[$i] = curl_init($url['url']); 
      curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0); 
      curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1); 
      curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 0); 
      curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER, false); 
      curl_multi_add_handle($multiCurlHandler, $ch[$i]); 
} 

Trả về tôi 403 bị cấm trả lời.

Cảm ơn bạn đã đề xuất và nhận xét.

+2

'$ url ['url']' là gì? Đây là tất cả về máy chủ từ xa, nó có rất ít việc phải làm với cURL. Bạn đang cố gắng tiêu thụ một dịch vụ web, nhìn vào các trang web, v.v ...? – DaveRandom

Trả lời

9

Chỉ cần thử bằng cách thêm hai dòng cho Tác nhân người dùng và xem liệu nó có hoạt động hay không. Một số máy chủ không chấp nhận yêu cầu từ tập lệnh, nó phụ thuộc vào tác nhân người dùng.

// line 1 
$agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 

foreach ($urls as $i => $url) { 
    $ch[$i] = curl_init($url['url']); 
    curl_setopt($ch[$i], CURLOPT_TIMEOUT, 0); 
    curl_setopt($ch[$i], CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch[$i], CURLOPT_CONNECTTIMEOUT, 0); 

    // line 2 
    curl_setopt($ch[$i], CURLOPT_USERAGENT, $agent); 

    curl_setopt($ch[$i], CURLOPT_SSL_VERIFYPEER, false); 
    curl_multi_add_handle($multiCurlHandler, $ch[$i]); 
} 
1

Liên hệ với ai đó chạy trang web bạn đang cố kết nối và hỏi họ tại sao yêu cầu của bạn bị cấm.

Sau đó, bạn có thể dừng (nếu những gì bạn đang làm được coi là không được chấp nhận bởi chúng) hoặc thay đổi yêu cầu để phù hợp với quy tắc của chúng.

0

Thử đặt tiêu đề Người giới thiệu và Tác nhân người dùng, nhưng!

... cài đặt CURLOPT_SSL_VERIFYPEER thành sai là nguy hiểm và không bao giờ được thực hiện trong quá trình sản xuất. Bọc dòng đó trong một kiểm tra is_dev của một số loại ở mức tối thiểu.

Bạn đang đánh bại mục đích của SSL bằng cách làm như vậy, cho phép kẻ tấn công chặn yêu cầu của bạn và trả lại những gì họ thích mà không cần xác minh chứng chỉ SSL của họ.

0

Sanjay's answer luôn có thể hữu ích. Nhưng khi IP khách hàng bị chặn bởi phía máy chủ, thực thi curl ở phía máy khách cũng nhận được lỗi này.

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