ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: Narkorns ที่ 26 มกราคม 2018, 00:39:12



หัวข้อ: พอจะมีวิธีใช้ CURL ดึงข้อมูลหน้าเว็บที่ใช้ AJAX บ้างหรือเปล่าครับ
เริ่มหัวข้อโดย: Narkorns ที่ 26 มกราคม 2018, 00:39:12
สวัสดีครับ คำถามตามหัวข้อเลยครับ พอดีนั่งงมมาประมาณ 4 วันแล้วครับหาวิธีไม่ได้สักที
เป้าหมายของผมคือใช้ CURL เก็บข้อมูลหน้าเว็บตาม URL เช่น

httpx://www.example/category/?page=1
httpx://www.example/category/?page=2
httpx://www.example/category/?page=3

แต่กลับได้ข้อมูลหน้าเว็บแบบเดียวกันมาเลยครับ ซึ่งผมได้ตรวจสอบดูแล้วเวลาเปลี่ยนหน้า จะเรียกหน้าที่เป็น AJAX มาตามลิงค์แบบน้ี้ เช่น

httpx://www.example/category/?ajax=t&page=1
httpx://www.example/category/?ajax=t&page=2
httpx://www.example/category/?ajax=t&page=3

ซึ่งผลก็ลองใช้ CURL เรียก URL ตามด้านบน ข้อมูลที่ได้เป็นข้อมูลแบบ JSON แต่ข้อมูลกลับเหมือนเดิม และเหมือนกันทุกหน้า ตามแบบแรกเลยครับ
ต่างกันเพียงรูปแบบข้อมูล

โค้ดหลัก ๆ ที่ผมใช้มีดังนี้ครับ

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec ($ch);
curl_close ($ch);
echo $result;

ประมาณนี้ครับ.... ส่วนเรื่องการลองก็ลองเปลี่ยนและเพิ่มตัว curl_setopt ตามที่หาวิธีแก้จากเว็บต่าง ๆ แต่ก็ไม่ได้ผลครับ

มีใครที่เคยเจอปัญหาแบบนี้บ้างหรือเปล่าครับ หรือใครพอจะมีวิธีแนะนำบ้างครับ ขอบคุณครับ  :wanwan017: :wanwan017:



หัวข้อ: Re: พอจะมีวิธีใช้ CURL ดึงข้อมูลหน้าเว็บที่ใช้ AJAX บ้างหรือเปล่าครับ
เริ่มหัวข้อโดย: topbaba2 ที่ 26 มกราคม 2018, 00:54:13
มันไม่ใช่ ajax ครับ เค้าตั้งชื่อ query ไว้ว่า ajax เฉยๆ
ทีนี้ลองเช็ค header ที่ส่ง request ดูครับ ฝั่งนู้นอาจจะเขียนกันบอทไว้
ดังนั้นเราต้องเลียนแบบการทำงานของบราวเซอร์ให้ได้มากที่สุดครับ
ใช้ chrome ดูว่าเราส่ง request อะไรไปตอนเข้าไปที่หน้านั้น


หัวข้อ: Re: พอจะมีวิธีใช้ CURL ดึงข้อมูลหน้าเว็บที่ใช้ AJAX บ้างหรือเปล่าครับ
เริ่มหัวข้อโดย: Narkorns ที่ 26 มกราคม 2018, 09:53:23
มันไม่ใช่ ajax ครับ เค้าตั้งชื่อ query ไว้ว่า ajax เฉยๆ
ทีนี้ลองเช็ค header ที่ส่ง request ดูครับ ฝั่งนู้นอาจจะเขียนกันบอทไว้
ดังนั้นเราต้องเลียนแบบการทำงานของบราวเซอร์ให้ได้มากที่สุดครับ
ใช้ chrome ดูว่าเราส่ง request อะไรไปตอนเข้าไปที่หน้านั้น

ขอบคุณมากครับ
ต้องดูที่ส่วนของ Request Header ใช่หรือเปล่าครับ
แล้วการส่ง Request เลียนแบบการทำงานของบราวเซอร์ นี่ใช้ CURLOPT_HEADER ใช่หรือเปล่าครับ