Crawler amazon qua proxy bị lỗi

Discussion in 'AutoBlog' started by Hoa Mãn Lâu, Feb 6, 2020.

  1. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Tình hình là mình đang crawler 1 ít dữ liệu từ amazon, có xài qua proxy instantproxies nhưng rất kì lạ 1 cái là mình chạy ở localhost thì craw ngon lành, nhưng đem code đó lên vps thì bị dính captcha. Thử 10 lần vẫn y như vậy. Ko biết bị lỗi gì ae có gặp phải cho mình xin ý kiến

    Đây là code mình craw, dùng cả trên vps và local

     
  2. Dang

    Dang Bang Chúng

    Trước mình có test thử 1 số host - dùng proxy nó không báo lỗi nhưng bỏ qua (skip) proxy. Admin thử dùng đoạn code đó request đến ip[.]pavietnam[.]vn để thử xem ra ip của proxy hay vps.
     
  3. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Request tới url cậu đưa thì cả localhost và vps đều ra ip của proxy. @@. Mình củng ko hiểu vì sao lại lạ kì như vậy nữa
     
  4. Dang

    Dang Bang Chúng

    Code:
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'));
    Mình thử qua được :D
     
  5. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Nếu request bình thường ko dùng proxy thì qua amazon ngon lành, bật proxy lên thì mới bị dính captcha. Proxy private nên chắc ko có thánh nào đang xài chung mình đâu. Nên mới đau đầu ấy
     
  6. Dang

    Dang Bang Chúng

    Code:
    https://www.amazon.com/gp/profile/amzn1.account.AFWQGIAEPHI3ZRGO7VQ3QHCGOPBQ
    Url đó mình crawl luôn bị captcha, thêm dòng trên thì mình qua được, nguyên code của mình (proxy bên dưới là public) :

    Code:
    <?php
    
    $url = 'https://www.amazon.com/gp/profile/amzn1.account.AFWQGIAEPHI3ZRGO7VQ3QHCGOPBQ';
    
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_HEADER, true);
    
    curl_setopt($ch, CURLOPT_PROXY, '118.27.31.50:3128');
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/58.0');
    
    curl_setopt($ch, CURLOPT_URL, trim($url));
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'));
    
    $rsData = curl_exec($ch);
    
    curl_close($ch);
    
    echo "<!--{$rsData}-->";
    
    ?>
     
  7. Nai

    Nai MiddleMan Staff Member

    Trước em crawl cookpad cũng vậy. Chả hiểu =)). Nhưng dữ liệu ko nhiều nên thôi quất local cho lẹ
     
  8. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Thử dùng code của thím thì bị y chang tình trạng mình gặp luôn
    \[​IMG]


    Vẫn có cách khác để giải quyết nhưng thật sự ko hiểu là vì sao proxy instantproxies lại gặp vấn đề thôi, thằng đó là proxy private mà sao lại block nhỉ
     
  9. money

    money Hương Chủ

    @Hoa Mãn Lâu code như này là xong. Anh test cả link của em lẫn link product đều chạy tốt.
    Nếu không dùng curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-FORWARDED-FOR: '.$proxy)); thì sẽ bị Captcha hoặc màn hình Sorry với con Cờ Hó
    Bỏ đoạn code này đi: curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'));
    Full code như bên dưới, em copy về thay $proxy = 'A.B.C.D:port'; thành giá trị proxy của em mà test.

    Code:
    <?php
    
    $proxy = 'A.B.C.D:Port';
    $url = 'https://www.amazon.com/gp/profile/amzn1.account.AFWQGIAEPHI3ZRGO7VQ3QHCGOPBQ';
    
    //$url = 'https://www.amazon.com/dp/B0015R3AAO';
    
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_HEADER, true);
    
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    
    curl_setopt($ch,CURLOPT_HTTPHEADER,array('X-FORWARDED-FOR: '.$proxy));
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/58.0');
    
    curl_setopt($ch, CURLOPT_URL, trim($url));
    
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    
    //curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'));
    
    $rsData = curl_exec($ch);
    
    curl_close($ch);
    
    echo "<!--{$rsData}-->";
    
    ?>
     
    Hoa Mãn Lâu likes this.
  10. money

    money Hương Chủ

    Lý do: do cấu hình nginx/apache của em không dấu header mà show luôn ra real IP. Amazon nó check ra real IP là máy em --> không có trong blacklist --> nó return kết quả (trên laptop của anh vẫn bị lỗi khi chưa dấu X-FORWARDED-FOR)
    Khi em chạy trên VPS --> Amazon check ra real IP của VPS thấy CÓ trong blacklist --> bật captcha
    Anh đoán thế nhưng khả năng là đúng thế (cao siêu hơn thì anh ko biết, hóng mấy anh em trùm networking vào giải thích chi tiết hơn)
    Còn nếu em hỏi tại sao instanproxies nó ko dấu hay làm gì đó thì anh chịu.
    Và nếu em chạy code của anh ko dc thì anh cũng chịu :D
     
  11. money

    money Hương Chủ

    Đây là kết quả anh crawl từ server:

    amzcurl.png
     
    likingonline and Hoa Mãn Lâu like this.
  12. xmenvn2510

    xmenvn2510 Moderator + MiddleMan Staff Member

    A lại nói đúng. {big_smile}.
    E định comment vậy mà chưa test khi @Hoa Mãn Lâu post. Nên ko dám comment. Giờ mới test cũng ngon như của a.
     
    Hoa Mãn Lâu likes this.
  13. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    E copy y nguyên code của anh Andy bỏ lên con vps chỉ thay mỗi cái url product của aws với proxy nhưng vẫn ra tấm hình con cờ hó. Ko lẽ proxy của e có vấn đề nhỉ
    [​IMG]
     
  14. money

    money Hương Chủ

    @Hoa Mãn Lâu kkk kì vậy. Em đã add IP của VPS vào InstantProxies chưa?

    Đây là màn hình anh crawl product của Amz trên VPS của anh (link product trong code trước ($url = 'https://www.amazon.com/dp/B0015R3AAO';)
    Lưu ý :em nên dùng link kiểu: https:// www. amazon. com/... nhé, vì dùng link kiểu khác thì Amazon redirect sẽ redirect về https:// www. amazon .com/... sẽ gây error
    Test lại nếu vẫn không được thì em ib IP VPS cho anh (ib Telegram nhé), anh sẽ add vào cPanel của InstantProxies rồi anh đưa em vài proxy của anh xài thử xem được không.

    amzcurl.01.png
     
    Hoa Mãn Lâu likes this.
  15. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Tình hình là e đã fix xong rồi ạ, Vấn đề đơn giản là do phiên bản xampp xài php trên máy local của e là php 5.6 còn bên vps là php 7.2 nên code bên local chạy ngon bên vps ko chạy dc, Xong down php từ 7.2 xuống 5.6 thì 2 bên chạy ngon lành. Củng ko hiểu vì sao ở bản 7.2 mới nhất thì lại ko chạy ngon lành dc. @@
    Rất cảm ơn mn đã nhiệt tình hỗ trợ ạ
     
    Leanc and money like this.
  16. congloi

    congloi Sơ Nhập Giang Hồ

    cho mình hỏi là thằng amazon này crawl qua ip, mỗi ip tầm bao nhiểu request phải đổi vậy (hoặc bao nhiêu phút). và khi nó đưa ip vào blacklist thì nó khoá luôn hay là sau xx time nào đó nó sẽ mở lại vậy.

    Thanks các bác
     
  17. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Nó khóa rồi sẽ thả nhưng tầm 5-10 phút gì đó, Còn cái vụ limit thì chưa test nhưng chắc tầm 1 phút dc chục cái request ấy, có lúc request liên tục là ăn có lúc request có 1-2 cái củng bị dính limit. nên ko rõ nó check theo cơ chế nào nữa
     
    congloi likes this.
  18. congloi

    congloi Sơ Nhập Giang Hồ

    thanks bác, thằng này khó tánh quá :)
     
  19. Hoa Mãn Lâu

    Hoa Mãn Lâu Trưởng Môn

    Nó mà dễ thì ae bô lão trên nầy hấp diêm chắc e nó rớt top site eco thế giới lâu dồi :v
     
    congloi likes this.