ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingใช้ fsockopen ในการเก็บข้อมูลเว็บอย่างไรอ่าครับ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ใช้ fsockopen ในการเก็บข้อมูลเว็บอย่างไรอ่าครับ  (อ่าน 3366 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
xmen256k
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,999



ดูรายละเอียด
« เมื่อ: 07 ธันวาคม 2008, 01:54:21 »

จากกระทู้
file_get_contents ออกมาแล้วเราจะสามารถหาข้อความที่เราต้องการหายังไงดีครับ
http://www.thaiseoboard.com/index.php?topic=37596.0
อ้างถึง
จาที่อ่านๆดูเห็นบอกว่า curl_init() จะเร็วกว่าใช่ป่าวครับ แล้วจะอกมาเป็น html

ที่นี้ผมอยากหา ส่วนส่วนนึงของเวปที่ ผม get มาอะครับ

อย่าง

$url = $websiteown;
$url = file_get_contents($url);
echo $url;

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


สมมุติว่า

ใน html มี

.
.
.

<div id="content">
<img src="http://..........jpg">
</div>
.
.
.

ผมต้องการข้อมูลที่อยู่หลัง <div id="content">  และ ก่อน </div> เท่านั้นครับ

ต้องเขียนยังไงครับผม
ขอบพระคุณครับ 


ไม่ทราบว่า ถ้าจะใช้ fsockopen แทน จะต้องใช้สคริปแบบไหนอ่าครับ

ขอบคุณมากครับ
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 07 ธันวาคม 2008, 02:01:31 »

หาดูตัวอย่างจากนี้ดูครับ http://th.php.net/fsockopen

ก็แค่รับค่าจาก fgets หรือ fread

 Tongue
บันทึกการเข้า

xmen256k
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,999



ดูรายละเอียด
« ตอบ #2 เมื่อ: 07 ธันวาคม 2008, 02:21:16 »

หาดูตัวอย่างจากนี้ดูครับ http://th.php.net/fsockopen

ก็แค่รับค่าจาก fgets หรือ fread

 Tongue


เอ่อ คือถ้าไม่เป็นการรบกวนขอช่วยโค๊ดไฟล์ตัวอย่างสักหน่อยได้มั๊ยอ่าครับ ลักษณะการทำงานเหมือน จขกท.เลยครับ
ปล.อังกฤษก็ไม่ค่อยจะรู้เรื่องกับเค้าเท่าไหร่อ่าครับ php ก็อยู่ในช่วงเริ่มต้นเท่านั้นอ่าครับ

ขอบคุณครับ
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 07 ธันวาคม 2008, 02:37:12 »

โค๊ด:
$url = "http://www.thaiseoboard.com/index.php/topic,45350.0.html";

$u = parse_url($url);
$fp = fsockopen($u['host'], 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET ".$u['path']." HTTP/1.1\r\n";
    $out .= "Host: ".$u['host']."\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        $page .= fgets($fp, 128);
    }
    fclose($fp);
}

preg_match_all('#<b><a[^>]+action=profile[^>]+>([^<]+)</a></b>#', $page , $matches);
print_r($matches[1]);
บันทึกการเข้า

xmen256k
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,999



ดูรายละเอียด
« ตอบ #4 เมื่อ: 07 ธันวาคม 2008, 02:50:43 »

ขอบคุณมากครับ พอจะได้แนวทางหละครับ ^^ +1ให้เลย
บันทึกการเข้า
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 08 ธันวาคม 2008, 00:30:45 »

การทำแบบนี้มี Class httpClient เยอะเลยครับ ที่ผมเห็นที่ดีที่สุด คือตัวที่ plug อยู่ใน Libraries ของ Zend Framework

แต่ว่ามันมีวิธีการลงที่ค่นข้างวุ่นวายในส่วนของ การ include path ผมเลยเอาตัวนี้มาแก้ขัดให้แทน

httpClient
http://www.phpclasses.org/browse/package/576.html

หรือถ้าจะเอ าแบบ cURL ก็มีให้เลือก
http://www.phpclasses.org/browse/package/1988.html
http://www.phpclasses.org/browse/package/3547.html

บันทึกการเข้า

xmen256k
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,999



ดูรายละเอียด
« ตอบ #6 เมื่อ: 08 ธันวาคม 2008, 02:36:03 »

การทำแบบนี้มี Class httpClient เยอะเลยครับ ที่ผมเห็นที่ดีที่สุด คือตัวที่ plug อยู่ใน Libraries ของ Zend Framework

แต่ว่ามันมีวิธีการลงที่ค่นข้างวุ่นวายในส่วนของ การ include path ผมเลยเอาตัวนี้มาแก้ขัดให้แทน

httpClient
http://www.phpclasses.org/browse/package/576.html

หรือถ้าจะเอ าแบบ cURL ก็มีให้เลือก
http://www.phpclasses.org/browse/package/1988.html
http://www.phpclasses.org/browse/package/3547.html




เอ่อ งงได้ใจเลยผม  Huh? Huh?
บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 08 ธันวาคม 2008, 02:41:44 »

ู^
^
ถ้าจะใช้พวก libraly ที่เขียนในรูป class

แนะนำให้ศึกษาเรื่องการเขียนในรูป OOP ก่อนนะครับ
จะได้ไม่งง

 Smiley
บันทึกการเข้า

xmen256k
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 98
ออฟไลน์ ออฟไลน์

กระทู้: 1,999



ดูรายละเอียด
« ตอบ #8 เมื่อ: 08 ธันวาคม 2008, 02:48:37 »

โอ้ว เทพทั้งน้าน
ผมก็คงพื้นฐานต่อไป แหะๆ
บันทึกการเข้า
Amnaj
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 34



ดูรายละเอียด
« ตอบ #9 เมื่อ: 11 ธันวาคม 2008, 15:52:09 »

แล้วการใช้ fsockopen นี่ มันสามารถส่งค่าผ่านตัวแปลเหมือน curl ได้ป่ะ
 แล้วโปรแกรม sniffer ที่ใช้ดู  header อ่ะงับ ใครมีมั่งขอหน่อย หา ใน google ไม่พบใช้ คำค้น  ไม่ตรงงับ
บันทึกการเข้า
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 11 ธันวาคม 2008, 16:04:29 »

ได้สิครับ ลองไปโหลด ตัว httpClient ด้านบนมาก่อน หรือไม่ก็ เอา Google หาคำว่า php snoopy
บันทึกการเข้า

Amnaj
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 34



ดูรายละเอียด
« ตอบ #11 เมื่อ: 11 ธันวาคม 2008, 17:30:30 »

ได้สิครับ ลองไปโหลด ตัว httpClient ด้านบนมาก่อน หรือไม่ก็ เอา Google หาคำว่า php snoopy

พอมีตัวอย่างง่ายให้ดูไหมงับ อย่างเช่นการล็อคอิน เคยใช้แต่ curl ง่ะ
ไปโหลด php snoopy มาแล้ว แต่ เหอะ งง นิดหน่อย
บันทึกการเข้า
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 11 ธันวาคม 2008, 17:40:34 »

^
^
^
http://snippets.dzone.com/posts/show/2007

โค๊ด:
<?php
    
require(&#39;snoopy.php&#39;);
   
    
$snoopy = new Snoopy();
   
    
$url = &#39;http://www.example.com&#39;;
   
    
$data[&#39;param1&#39;] = &#39;value1&#39;;
    
$data[&#39;param2&#39;] = &#39;value2&#39;;
    
$data[&#39;param3&#39;] = &#39;value3&#39;;
   
    
$snoopy->submit($url$data);
?>
« แก้ไขครั้งสุดท้าย: 11 ธันวาคม 2008, 17:47:11 โดย Tee++; » บันทึกการเข้า

Amnaj
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 34



ดูรายละเอียด
« ตอบ #13 เมื่อ: 11 ธันวาคม 2008, 18:13:40 »

^
^
^
http://snippets.dzone.com/posts/show/2007

โค๊ด:
<?php
    
require(&#39;snoopy.php&#39;);
   
    
$snoopy = new Snoopy();
   
    
$url = &#39;http://www.example.com&#39;;
   
    
$data[&#39;param1&#39;] = &#39;value1&#39;;
    
$data[&#39;param2&#39;] = &#39;value2&#39;;
    
$data[&#39;param3&#39;] = &#39;value3&#39;;
   
    
$snoopy->submit($url$data);
?>


ขอบคุณมากครับ เข้าใจมากแล้วครับ
แต่ค่าเกี่ยวกับ cookies อ่ะงับ มันต้องใช้ตัวแปลจากในเว็บ หรือ เราสร้างขึ้นมาเก็บ
แล้วค่า  cookies หรือ Session มันถูกเก็บไว้ในงับ

ประมาณว่าล็อคอิน แล้ว แต่ถ้าจะไปหน้าต่อไปก็ยังใช้ Session เดิม งับ (อยากลองในสิ่งที่ curl ทำไม่ได้ (อาจเพราะไม่เข้าใจมันเอง เหอะ))

แปลกใจทำไม    curl , fsockopen ,php snoopy ทำไม ถึงใช้ Session เดี่ยวกับการเข้าหน้าเว็บปกติไม่ได้
« แก้ไขครั้งสุดท้าย: 11 ธันวาคม 2008, 18:17:43 โดย Amnaj » บันทึกการเข้า
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 79
ออฟไลน์ ออฟไลน์

กระทู้: 1,861



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 11 ธันวาคม 2008, 18:28:21 »

ทำได้ครับ มันสามารถ Store Cookie ไว้กับตัวได้ โดยที่ cURL จะ Store ในไฟล์ ดูเรื่อง cookie jar

ส่วนพวก httpClient มักจะ store ใน Session ถ้าจะใช้ระดับนี้ผมว่าไปเอา ของ Zend มาใช้จะดีกว่า

ส่วน session ของเวบ มันวิ่งได้ ปกติอยู่แล้วครับ เพราะเก็บ ที่ Server ไม่ใช่ Client

ส่วนการ authenticate แบบ pop-up อันนี้ผมเคยลองแต่กับ cURL โดย set opt ตัวนี้ลงไปด้วย
CURLOPT_UNRESTRICTED_AUTH

ส่วนเรื่อง SSL ผมก็เคยลองแต่ของ cURL โดย set opt ตัวนี้
CURLOPT_SSL_VERIFYPEER


ถ้าให้เลือกระหว่าง 2 ตัวนี้ ผมเลือกใช้งาน cURL ครับ เพราะเขียนโครตง่าย
บันทึกการเข้า

Amnaj
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 34



ดูรายละเอียด
« ตอบ #15 เมื่อ: 11 ธันวาคม 2008, 19:36:12 »

cURL ยอมรับว่าใช้ง่าย เข้าใจง่ายครับ แต่ก็ยังใช้กับเว็บบางที่ไม่ได้
ลองใช้ EffeTech HTTP Sniffer ตรวจสอบค่าตอนส่งแบบปกติ กับที่ใช้ cURL มันต่างกัน
ตรง ความแตกต่างของ Cookie มันเกี่ยวกันไหมนี่


เพิ่มเติม สมมุติ เรา ใช้ เบราเซอร์ ล็อคอินเว็บ เราจะเอา Session มาใช้ใน cURL ได้ป่ะ ลองไปดู Session ในเครื่องกับที่ใช้ cURL มันคนละรูปแบบเลย
« แก้ไขครั้งสุดท้าย: 11 ธันวาคม 2008, 20:48:34 โดย Amnaj » บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์