|
|
|
สอบถามท่านผู้รู้ ทำมัยผมใช้คำสั่ง curl แล้วไม่มีอะไรเกิดขึ้น |
|
|
|
|
|
|
|
Code (PHP)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://xxx.com/login');
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "username=xxx&password=xxx");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'C:/xampp/htdocs/casino/ajax/text.txt'); //could be empty, but cause problems on some hosts
curl_setopt($ch, CURLOPT_COOKIEFILE, 'C:/xampp/htdocs/casino/ajax/text.txt'); //could be empty, but cause problems on some hosts
$answer = curl_exec($ch);
if (curl_error($ch)) {
echo curl_error($ch);
}
curl_setopt($ch, CURLOPT_URL, 'https://xxx.com/xx');
curl_setopt($ch, CURLOPT_POST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, "");
$answer = curl_exec($ch);
if (curl_error($ch)) {
echo curl_error($ch);
}
Tag : - - - -
|
ประวัติการแก้ไข 2019-06-09 10:23:07
|
|
|
|
|
Date :
2019-06-08 20:19:12 |
By :
828899737459956 |
View :
1571 |
Reply :
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หาวิธีใหนก็ดึงข้อมูลเว็บนี้มาไม่ได้ครับไม่รู้ว่าติดตรงใหน
|
|
|
|
|
Date :
2019-06-08 20:21:11 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โฆษณาเวป หรือเปล่า
วัตถุประสงค์จะทำอะไรกับเวปเขา
|
|
|
|
|
Date :
2019-06-08 21:15:09 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมต้องการดึงข้อมูลสถิติมาวิเคราะครับ ลองส่งไปแล้วเหมือนไม่มีอะไรตอบกลับมาครับ แต่ไม่ขึ้นว่าผิดพาด ไม่มีเจตนาโฆษณาเวป
ผมได้ทำการแก้ไขลิ้งค์แล้วครับ รบกวนแนะแนวทางการ login ด้วย curl ลองหาวิธีตามคู่มือก็ไม่ไดสักทีไม่รู้ว่าติดตรงใหน
|
|
|
|
|
Date :
2019-06-09 10:30:00 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องวิเคราะห์ javascript ก่อน เขาส่งอะไรไป
และมันต้องเริ่มต้้งแต่เปิดเวป เพื่อให้มีการเปิด session เก็บ cookie
แล้วถีงส่ง login ไปที่ละเสตป
|
|
|
|
|
Date :
2019-06-09 11:05:15 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้แล้วครับ ผมไล่ดูทีละขั้นตอนตามเว็บบราวเซอร์ส่ง Request ข้อมูลที่ผมต้องการไม่ต้อง login ก็ดึงได้ ผมมัวแต่จดจ่อตรง code หาวิธีสารพัดแต่สุดท้ายเจอว่าเส้นผมบังภูเขา มันอยู่ตรงนี้ api/table/33?include=dealer,info ยังไงก็ขอบคุณนะครับที่แนะแนวทาง
|
|
|
|
|
Date :
2019-06-09 12:51:20 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอรบกวนอีกนิดนะครับ ผมได้ทำการล็อกอินด้วย curl สำเร็จแล้ว ตาม code ข้างล่าง แต่อยากไปดึงข้อมูลที่อยู่หน้าอื่นๆต้องเขียนต่อยังไงครับ
Code (PHP)
$url = "https://xxxxxxx.com/login";
$username = "xxxx";
$password = "xxxx";
$csrf_token_name = "_csrf";
$params = array(
"language" => "th&",
"redirect" => "&",
"username" => $username."&",
"password" => $password,
);
$token_cookie= realpath("test.txt");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/32.0.1700.107 Chrome/32.0.1700.107 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $token_cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $token_cookie);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
/* print_r($response); */
if (curl_errno($ch)) die(curl_error($ch));
libxml_use_internal_errors(true);
$dom = new DomDocument();
$dom->loadHTML($response);
libxml_use_internal_errors(false);
$tokens = $dom->getElementsByTagName("input");
for ($i = 0; $i < $tokens->length; $i++)
{
$meta = $tokens->item($i);
if($meta->getAttribute('name') == '_csrf')
$t = $meta->getAttribute('value');
}
if($t) {
$csrf_token = file_get_contents(realpath("another-cookie.txt"));
$info = "";
foreach($params as $param_key => $param_value)
{
$info .= $param_key ."=". $param_value;
}
$postinfo = $csrf_token_name."=".$t."&".$info;
$headers = array();
$header[0] = "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";
$header[] = "accept-encoding: gzip, deflate, br";
$header[] = "accept-language: en-US,en;q=0.9";
$header[] = "cache-control: max-age=0";
$header[] = "content-length: 100";
$header[] = "content-type: application/x-www-form-urlencoded";
$headers[] = "X-CSRF-Token: $t";
$headers[] = "Cookie: $token_cookie";
$headers[] = "origin: https://xxx.com";
$headers[] = "referer: https://xxx.com/login";
$headers[] = "sec-fetch-mode: navigate";
$headers[] = "sec-fetch-site: same-origin";
$headers[] = "sec-fetch-user: ?1";
$headers[] = "upgrade-insecure-requests: 1";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.0 Safari/537.36");
curl_setopt($ch, CURLOPT_COOKIEJAR, $token_cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $token_cookie);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 260);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, true);
ob_start();
$html = curl_exec($ch);
$result = curl_getinfo($ch);
ob_get_clean();
echo "<pre>";
print_r($result);
echo "</pre>";
print($html);
if (curl_errno($ch)) print curl_error($ch);
curl_close($ch);
}
|
ประวัติการแก้ไข 2020-06-04 15:56:56
|
|
|
|
Date :
2020-06-04 15:42:21 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อันนี้คือ Response
Array ( [url] => https://xxx/login
[content_type] => text/html; charset=utf-8
[http_code] => 302
[header_size] => 996
[request_size] => 885
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.256597
[namelookup_time] => 0.000421
[connect_time] => 0.000443
[pretransfer_time] => 0.001363
[size_upload] => 100
[size_download] => 0
[speed_download] => 0
[speed_upload] => 390
[download_content_length] => -1
[upload_content_length] => 100
[starttransfer_time] => 0.001395
[redirect_time] => 0
[redirect_url] => https://xxx.com/m
[primary_ip] => xxx.xx.xx.xxx
[certinfo] => Array
(
)
[primary_port] => 443
[local_ip] => xx.xx.xx.xx
[local_port] => 45334
[http_version] => 3
[protocol] => 2
[ssl_verifyresult] => 0
[scheme] => HTTPS
[appconnect_time_us] => 445
[connect_time_us] => 443
[namelookup_time_us] => 421
[pretransfer_time_us] => 1363
[redirect_time_us] => 0
[starttransfer_time_us] => 1395
[total_time_us] => 256597
)
|
|
|
|
|
Date :
2020-06-04 15:53:40 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ศึกษา endpoint ของ api เป้าหมาย เหมือนที่คุณได้คำตอบเองใน No.5
ข้อมูลที่อยู่หน้าอื่นก็มี endpoint ของมัน parameter สำหรับ request มีอะไรบ้าง ดูในเว็บเขาครับ
ส่วน response ล่าสุด ถ้ามีข้อมูลที่คุณต้องการ ก็เรียกใช้โดยตรงเลย
แต่ถ้าไม่ใช่ นั่นอาจเป็นสัญญาณของการติดต่อ endpoint ไม่สำเร็จแล้วได้ status response
ของ cURL กลับคืนมา
|
|
|
|
|
Date :
2020-06-04 18:00:01 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณคับ
|
|
|
|
|
Date :
2020-06-04 18:46:29 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เจอแล้วคับกระจ่างเลยคราวนี้ ขอบคุณนะครับที่ชี้ทางให้ข้อมูลที่ต้องการเพียบ เส้นผมบังภูเขาอีกแล้ว ดูจากบราวเซอร์มันrequestอะไรไปผมลองrequest ตามทุกอย่าง เรียก ถูก มันก็ตอบกลับ หลังจากลองเองมาหลายเดือนไม่น่าเชื่อว่าจะอยู่แค่นิ
|
|
|
|
|
Date :
2020-06-04 19:16:38 |
By :
828899737459956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2020-06-04 19:52:44 |
By :
PhrayaDev |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|