Mọi người cho mình hỏi là làm sao có thể lấy dữ liệu từ những trang cần đăng nhập. Mình đang xử dụng curl của php để xử lý phần đăng nhập. Cho mình hỏi là phần curl của mình cần phải sửa lại những gì để lấy được dữ liệu ở trang 'teamlink.vn/scouters/trang-cua-toi' Code: $url = 'teamlink.vn/scouters/trang-cua-toi'; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'teamlink.vn/loginmodal', CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36', CURLOPT_POST => 1, CURLOPT_TIMEOUT => 30000, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_SSL_VERIFYPEER => false, //Bỏ kiểm SSL CURLOPT_COOKIEJAR => 'cookie.txt', CURLOPT_XOAUTH2_BEARER => 'To5OOh8vgGnkFTiyLlmRIxb1Tjf42NMOva9DRmAv', CURLOPT_POSTFIELDS => array( '_token' => 'To5OOh8vgGnkFTiyLlmRIxb1Tjf42NMOva9DRmAv', 'email' => '', 'password' => '' ) )); $resp = curl_exec($curl); $err = curl_error($curl); curl_close($curl); print_r($resp); exit(); Kết quả: The page has expired due to inactivity. Please refresh and try again.
CURL dùng để crawl mấy trang bắt đăng nhập khá khoai. Crawl mấy trang dễ dễ thì chạy ok. Còn mấy trang đăng nhập với verify thì phải dùng kĩ thuật khác. Mình hay dùng Imacros hoặc code exntention Chorme....Còn các cao nhân khác ở đây thì người dùng python, người dùng selinium...
Hiện tại thì mình sử dụng laravel nên chỉ biết mỗi thằng curl của php, còn mấy thằng kìa thì mình ko rành lắm
Mình dùng thằng CURL này khá nhiều. Và càng ngày càng thấy nó cùi bắp. Mấy site mình crawl dùng CURL toàn bị chặn. Laravel bản chất nó cũng là CURL đóng gói packet vào thôi bác. Nếu chuyên Crawl thì nên tìm thêm công nghệ mới.
PHP: $curl = curl_init();$request_headers = array( "X-CSRF-TOKEN:425KyjVHeZ0esmfiGTc45INE4bK5yMRIdZj53quU", "X-Requested-With:XMLHttpRequest");curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_URL => 'https://teamlink.vn/loginmodal', CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36', CURLOPT_POST => 1, CURLOPT_TIMEOUT => 30000, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_SSL_VERIFYPEER => false, //Bỏ kiểm SSL CURLOPT_COOKIEJAR => 'cookie.txt', CURLOPT_HTTPHEADER => $request_headers, CURLOPT_DNS_USE_GLOBAL_CACHE => FALSE, CURLOPT_DNS_CACHE_TIMEOUT => 2, CURLOPT_XOAUTH2_BEARER => '425KyjVHeZ0esmfiGTc45INE4bK5yMRIdZj53quU', CURLOPT_POSTFIELDS => array( '_token' => '425KyjVHeZ0esmfiGTc45INE4bK5yMRIdZj53quU', 'email' => 'ss', 'password' => 'ss' )));$resp = curl_exec($curl);$err = curl_error($curl);curl_close($curl);echo $err;print_r($resp);exit();
thanks bạn nha nhưng mà cho mình hỏi 1 chút. Là chỗ phần email với password có cần phải urlencode ko Chỗ token thì mình xử lý như ở dưới ko biết có đúng ko. Còn phần lấy cookie thì mình làm như vậy đúng ko. Kết quả: Ah phần quan trọng là mình muốn lấy html trang này teamlink.vn/scouters/trang-cua-toi. Có cách nào khi xử lý xong phần đăng nhập thì nó direct qua trang này dc ko bạn. PHP: $urlkey = 'https://teamlink.vn/';$gethtml = file_get_html($urlkey);$keygen = $gethtml->find('input[name=_token]', 0);$key = $keygen->attr['value'];$cookie = '_ga=GA1.2.24755889.1549945211; __zi=2000.Ve_lxOO119eyaE_wcKHRrpcHxlgLHboQC9Jjlvr7NP4vakkqCW.1; _gid=GA1.2.942603382.1566899436; _gat_gtag_UA_125591340_1=1; XSRF-TOKEN=eyJpdiI6Ilp4SGxYSCs1U1grUDZEVDh3Z2tRU0E9PSIsInZhbHVlIjoiVExRQTlrM2VScDJNQVl6a3hQVDRcL0h1NWxTUXdjQmJnRlhwWlwvRFwvM1BsQlFpVXNLSElqdzZNTlVnSVpXcGt5bCIsIm1hYyI6IjI5NDE3MDhhMTg3ZTRiYTI1OTZmZDRjYzE5M2MwZWIzZDMxNGFiODNmYzg3ZmE4MWYzODJjZTNmYjliOWZkYmEifQ^%^3D^%^3D; scouter_session=eyJpdiI6IlNcLys2bmdzbjREaTBwUTEwWFJrb2VnPT0iLCJ2YWx1ZSI6InpOdFR5V1o5MmJYQmlZZ3JFeUg1Z1JCVnBYdkR4MXZ1SnN6VHBwbDlhaTd6ajRicWNJeFA3Skp1cFFockJTMUEiLCJtYWMiOiJlOTY2YjQ0ZTVkOTg4YTE4YWQ0MmQ2ZmFjNjMwYjc5OWU5OTFkZDdkZTE2YzMyZTg0NTczZjY4ZmU2MDNjYTMyIn0^%^3D; fpsend=145097';$curl = curl_init();$request_headers = array("X-CSRF-TOKEN:" . $key,"X-Requested-With:XMLHttpRequest");curl_setopt_array($curl, array(CURLOPT_RETURNTRANSFER => 1,CURLOPT_URL => 'https://teamlink.vn/loginmodal',CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36',CURLOPT_POST => 1,CURLOPT_TIMEOUT => 300,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_SSL_VERIFYPEER => false, //Bỏ kiểm SSLCURLOPT_COOKIEJAR => $cookie,CURLOPT_HTTPHEADER => $request_headers,CURLOPT_DNS_USE_GLOBAL_CACHE => FALSE,CURLOPT_DNS_CACHE_TIMEOUT => 2,CURLOPT_XOAUTH2_BEARER => $key,CURLOPT_POSTFIELDS => array('_token' => $key,'email' => '','password' => '')));$resp = curl_exec($curl);$err = curl_error($curl);curl_close($curl);echo $err;print_r($resp);exit();
mình ko biết sao ko post hình được cách lấy cookie upsieutoc.com/image/LG1ryq kết quả upsieutoc.com/image/LG1dzw
Sau 1 hồi tìm hiêu thì mình có check được là lỗi ở trên là do ko gửi đúng token của laravel general trong form nên nó báo lỗi. Minh vô page = 2 trình duyệt khác nhau, mình copy token của thằng này thay = thằng kia nhấn submit thì báo lỗi tương tự như lúc mình crawl data. Vậy cho mình hỏi cách lấy token như của mình đúng ko PHP: $urlkey = 'https://teamlink.vn/';$gethtml = file_get_html($urlkey);$keygen = $gethtml->find('input[name=_token]', 0);$key = $keygen->attr['value']; Có j mong "Trưởng lão" hồi đáp =))
Mình thấy thằng CURL này ngon mà , bị chặn thì dùng thêm proxy + random user agents riêng mấy site mà content được write bằng js thì lại dùng cách khác
Mấy web bị chặn ddos bởi CF thì giải quyết sao đây các bác. Lần đầu dính 1 site, may mà dùng wp nên làm tay kết hợp được
Ra nhiều thiệt mà ko sài được nhưng 1 cái python e ko dùng Code: https://github.com/Anorov/cloudflare-scrape và 1 cái php thì ko dc Code: https://github. com/stackoverflowin/CloudFlare-PHP-Bypass