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

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

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingเรื่อง curl ช่วยทีครับ เกี่ยวกับดึง session,cookie ข้ามเว็บ (โปรเจคพางง) อีกรอบ
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: เรื่อง curl ช่วยทีครับ เกี่ยวกับดึง session,cookie ข้ามเว็บ (โปรเจคพางง) อีกรอบ  (อ่าน 7760 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
okgofun
ก๊วนเสียว
*

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

กระทู้: 396



ดูรายละเอียด
« เมื่อ: 01 ตุลาคม 2007, 11:16:13 »

curl เวลาดึงเว็บใดๆ มันจะดึงค่า session,cookie ของเว็บนั้นมาด้วยใหมครับ หรือว่าก็ไม่สามารถใช้งานได้อยู่ดี เพราะค่า session จะต้องถูกเก็บไว้ที่ server ของเขา แต่ถึงดึงมาได้เราก็รู้ไม่ได้อยู่ดีใช่ปะครับ ว่ามันมีค่าอะไร เพราะอยู่ที่ฝั่ง server นั้น คงเรียกออกมาทาง header ไม่ได้ใช่ปะครับ

 Tongue

เอ่อ ว่าแต่ curl มันกำหนดให้สร้าง session หรือ cookie ก่อนเข้าใช้งาน url ต่างๆได้ใหมครับ แบบว่าสวม session,cookie ยัดเข้าไปเลยอะ เอาให้เนียน  Embarrassed Embarrassed
« แก้ไขครั้งสุดท้าย: 01 ตุลาคม 2007, 13:09:30 โดย okgofun » บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
amaudy
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,212



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 01 ตุลาคม 2007, 11:32:33 »

hxxp://codersshack.com/forums/php_11/curl-libcurl-login-functions_30.html
hxxp://www.askapache.com/htaccess/sending-post-form-data-with-php-curl.html
บันทึกการเข้า

myong1
สมุนแก๊งเสียว
*

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

กระทู้: 569



ดูรายละเอียด
« ตอบ #2 เมื่อ: 01 ตุลาคม 2007, 12:06:50 »

ส่วนที่ยากที่สุดของการ post แบบ coding ก็คือตรงจุดนี้แหละครับ

ตอนนี้ผมยังไม่ได้ใช้ php แต่หลักการน่าจะเหมือนกัน

1.ต้องรู้ค่าตัวแปรต่าง ๆ ในการส่งไปซะก่อน โดยตอนนี้ผมใช้ extension ของ firefox ตัว web developer และอีกตัว live http headers

ในการตรวจสอบค่าต่าง ๆ ลอง search ดูละกันครับ หาเจอแน่นอนครับ

2.ต้องรับค่า cookies มาก่อน ซึ่งส่วนใหญ่จะรับตอน log in นั่นแหละครับ ถ้าผมจำไม่ผิดตัว curl จะมีวิธีเก็บ cookies เข้า text file ได้ครับ

ส่วน session ไม่มีปัญหาครับ เพราะมันเก็บไว้อยู่ใน server อยู่เดียว เพียงแต่เข้าให้ถูกขั้นตอนก็ได้อยู่แล้ว เช่นต้อง login ก่อน และค่อย post ประมาณนี้ครับ

แต่ที่ยากที่สุดเห็นจะเป็น captcha มากกว่าครับ เท่าที่ลองดูจะมีหลายที่ถ้า post ไป 4-5 ทีจะให้เราใส่ captcha ทุกครั้ง

ตรงนี้คงหมดสิทธ์ ต้อง manual สถานเดียว

 Smiley Smiley
บันทึกการเข้า
okgofun
ก๊วนเสียว
*

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

กระทู้: 396



ดูรายละเอียด
« ตอบ #3 เมื่อ: 01 ตุลาคม 2007, 12:11:04 »

hxxp://codersshack.com/forums/php_11/curl-libcurl-login-functions_30.html
hxxp://www.askapache.com/htaccess/sending-post-form-data-with-php-curl.html

ผมลอง
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");

ลองแล้วไม่เห็นมัน สร้างค่าใดๆไว้ใน cookie.txt เลยอะครับ เป็นไฟล์ว่างๆเหมือนเดิม เหมือนมันไม่ได้รับค่า session,cookie เลยอะ ผมเทสกับเว็บเพจที่สร้าง session ไว้ด้วยหนะครับ

ปล.ทดสอบใน localhost
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
okgofun
ก๊วนเสียว
*

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

กระทู้: 396



ดูรายละเอียด
« ตอบ #4 เมื่อ: 01 ตุลาคม 2007, 12:17:53 »

อ๊ะ โทษทีครับ เจอละ ค่ามันเซฟไว้ที่ path ใน apache

เอ? แต่เหมือนว่ามันมีแต่ค่า session_id แค่นั้นเองหนะครับ ทั้งๆที่ไฟล์นี้มีค่า cookie , session อื่นๆอีก แต่ไม่เห็นมันเซฟไว้แฮะ
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 01 ตุลาคม 2007, 12:25:55 »

ส่วนตัวผมเล่น fsockopen
เขียน header ส่งเองไปเลย

ขอบอกว่าลำบาก แต่ทำงานเร็วกว่า  Smiley

-----------------------------

Session ยังไงๆ ก็อยู่เซิร์ฟครับ เราไปเอามาไม่ได้หรอก
ส่วน Cookies นะ เอามาได้ครับ เพราะเขาต้องส่งมาอยู่แล้ว
บันทึกการเข้า

okgofun
ก๊วนเสียว
*

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

กระทู้: 396



ดูรายละเอียด
« ตอบ #6 เมื่อ: 01 ตุลาคม 2007, 12:33:46 »

ส่วนตัวผมเล่น fsockopen
เขียน header ส่งเองไปเลย

ขอบอกว่าลำบาก แต่ทำงานเร็วกว่า  Smiley

-----------------------------

Session ยังไงๆ ก็อยู่เซิร์ฟครับ เราไปเอามาไม่ได้หรอก
ส่วน Cookies นะ เอามาได้ครับ เพราะเขาต้องส่งมาอยู่แล้ว

fsockopen สามารถสร้าง session ส่งไปได้ใหมครับ (สงสัยไม่ได้อยู่ดีมั้ง ไม่งั้นแกล้งเขียนเล่นกันเต็มเตไปหมดแน่)

เอ? หรือว่าปรกติ เวลาดึงด้วย curl ยังไงซะค่า session ต่างๆของเพจที่ดึงก็ต้องสร้าง session เอาไว้อยู่ดี เราไม่ต้องไปทำอะไร สงสัยต้องลอง เฮ้ออออ
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
minute1
ก๊วนเสียว
*

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

กระทู้: 385



ดูรายละเอียด
« ตอบ #7 เมื่อ: 01 ตุลาคม 2007, 12:37:50 »

Session ยังคงต้องพึ่ง Cookies เพื่อเก็บค่า SessionID ครับ
ถ้าไม่ใช้ cookies ต้อง rewrite sessionid ไปกับ URL เท่านั้นครับ
บันทึกการเข้า

เพราะอากาศเปลี่ยนแปลงบ่อย ดูแลสุขภาพให้ดีนะครับ...ดูแลให้ดี ทั้งสุขภาพกาย และ สุขภาพใจ   
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 01 ตุลาคม 2007, 12:57:34 »

fsockopen ต่างกัน curl ตรง
1. ต้องเขียน header ส่งไปเอง
2. ทำงานเร็วกว่า ไม่มีค้าง (ถ้าเขียน connection ผิดมีค้างเติ่งครับ)

นอกนั้นเหมือนกันหมดแหละครับ เป้าหมายเหมือนกัน

- fsockopen สามารถสร้าง session ส่งไปได้ใหมครับ
ได้ก็ดีสิครับ  Tongue
บันทึกการเข้า

okgofun
ก๊วนเสียว
*

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

กระทู้: 396



ดูรายละเอียด
« ตอบ #9 เมื่อ: 01 ตุลาคม 2007, 13:04:14 »

สมมุตินะครับ หลักๆของโปรเจคที่จะทำ มันไม่ได้ซักที  Cry

เราทำระบบ มี server อยู่คนละที่

web a.com มีหน้า login แล้วพอ login เสร็จมันต้อง session_register username และ password และข้อมูลอีกแค่ไม่กี่ตัว อาจบันทึกลง session เอาไว้เป็น data

web b.com ของเราต้องการใช้  curl เพื่อทำการ login เข้าไปใน a.php แล้วทีนี้ ถ้าผมต้องการค่า session ใน username,password,data

ผมจะเอาค่ามาใช้ได้ยังไงอะครับ นี่หละปัญหา ลอง echo $_SESSION['username'] ; มันก็ไม่ออกอะครับ

ขอคำแนะนำทีเถิดครับ จนปัญญาและ  Lips Sealed
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
payu
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,887



ดูรายละเอียด
« ตอบ #10 เมื่อ: 01 ตุลาคม 2007, 15:26:27 »


คิดว่าทำไม่ได้ครับ

server จะแยก session ของแต่ละ client ออกจากกัน และไม่อนุญาตให้อ่านข้อมูลของ client อื่นได้โดยเด็ดขาด (เรื่องความปลอดภัยน่ะครับ)

ทางออกน่าจะเป็นการใช้ web service มากกว่า ถ้าหมายถึง a.com เป็นระบบที่ให้เราต้องการให้บริการในการ authenticate user เดียวกันจากหลาย client

แต่ถ้าเรา a.com ไม่ใช่ของเรา ...
ก็มีทางออกอีกทางครับ โดยการให้ client 1 ส่ง session id ไปให้ client 2 เพื่อ fake client (take over) โดยต้องขึ้นอยู่กับวิธีการที่ a.com เก็บ session id ด้วยครับ
- ถ้าเก็บโดยใช้ cookie ก็สามารถให้ client 1 ส่ง session id ไป client 2, client 2 fake cookie แล้ว access
- ถ้าใช้ผ่าน session id ทาง url ก็ง่ายหน่อย fake ใน url ได้เลย

แต่ก็ยังมีัปัญหาอีกครับ ถ้า server ตรวจสอบ session id กับเทคนิคการเข้ารหัส client ip address ก็คงจะหมดสิทธิครับ

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

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

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

กระทู้: 1,212



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 01 ตุลาคม 2007, 18:13:23 »

งั้นผมขอเสนอวิธีนี้ ไม่รู้ว่าเป็นไปได้หรือเปล่านะครับ คิดได้ออกตอนอาบน้ำ ยังไม่ได้ลองทำ (และยังไม่มีเวลาทดลองตอนนี้ด้วยครับ)

ใช้เรื่องการเข้ารหัสเข้าช่วยครับ

กรณีที่ ๑
ให้ เครื่อง A และ B ถือตัวแปรที่เป็น "รหัสลับ" (Secret key) ไว้เหมือนกัน
- เครื่อง A เมื่อทำการล็อกอินเข้าระบบเรียบร้อยแล้ว เอาข็อมูลที่ต้องการส่งไปให้เครื่อง B เข้ารหัสด้วย mcrypt_encrypt() เตรียมส่งให้เครื่อง B ด้วยวิธี GET ธรรมดาๆ (ผ่านลิงค์)
- เครื่อง B ได้ข้อมูลที่ผ่านการเข้ารหัส ที่ส่งจากเครื่อง A ก็ทำการถอดรหัสด้วย mcrypt_decrypt() เมื่อถอดข้อมูลออกมาแล้ว ก็นำไปตรวจสอบความถูกต้องต่อไป อาจจะเพิ่มการตรวจสอบ IP หรือวิธีการอย่างอื่นร่วมด้วย เพื่อเพิ่มความปลอดภัย

วิธีนี้ ความเสี่ยงขึ้นอยู่กับว่า หาก "รหัสลับ (Secret key)" หลุดรอดออกไป ผู้ประสงค์ร้ายจะสามารถถอดรหัส เพื่อดูข้อมูลที่เครื่อง A ส่งให้เครื่อง B

กรณีที่สอง Private key, Public key (ไม่ลงลึกถึงวิธีการนะครับ ยังไม่ได้ค้นข้อมูลเพิ่มเติม)
- เครื่อง A สร้างรหัสขึ้นมา ๒ ชุด โดย
     ชุดแรก Private key เก็บไว้ที่เครื่อง A เพื่อให้ใช้เข้ารหัสข้อมูล
     ชุกชุดที่สอง Public key มอบให้ เครื่อง B เพื่อให้เครื่อง B ตรวจสอบความถูกต้อง
- เครื่อง A เข้ารหัสข้อมูลที่ต้องการส่งไปหาเครื่อง B โดยใส่รหัส Private key เข้าไปด้วย แล้วส่งข้อมูลที่ผ่านการเข้ารหัสแล้ว ให้กับเครื่อง B โดยวิธี GET หรือ POST ก็ได้
- เครื่อง B เมื่อได้รับข้อมูล ที่ผ่านการเข้ารหัสจากเครื่อง A มาทำการตรวจสอบ ด้วย Public key ของเครื่อง A
 ด้วยวิธีการนี้ เครื่อง B จะทราบรู้เพียง ข้อมูลที่ได้มาจากเครื่อง A เป็นจริงหรือเท็จ
ความเสี่ยงของวิธีนี้คือ เครื่อง A ต้องเก็บ Private key ไว้ดีๆ ถ้าหลุดไปอยู่ในมือผู้ไม่หวังดี ก็จบ

ถ้าผมเข้าใจอะไรคาดเคลื่อนไป จักเป็นพระคุณอย่างมาก หากท่านจะโต้แย้งกลับมาด้วยจิตเมตตา

อ๊อด
« แก้ไขครั้งสุดท้าย: 01 ตุลาคม 2007, 18:16:18 โดย amaudy » บันทึกการเข้า

myong1
สมุนแก๊งเสียว
*

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

กระทู้: 569



ดูรายละเอียด
« ตอบ #12 เมื่อ: 01 ตุลาคม 2007, 18:55:25 »

ผมยังไม่เข้าใจส่วนที่คุณ okgofun บอกอย่างชัดเจนนัก

แต่หลักการของ session นั้น   server จะเป็นตัวเก็บข้อมูล และจะมี id cookies อยู่ที่เครื่องแบบที่คุณ minute1 บอกนั่นแหละครับ

ฉะนั้นค่าที่เราสามารถเก็บได้จะเป็น id cookies ซึ่งถ้าเราเอา cookies ตัวนี้ไปใช้ก่อน session expired เราก็จะได้ session ชุดนั้นมา

สรุปคร่าว ๆ ถ้าจะ post ส่งข้อมูลไปต้องมี

1.ค่าตัวแปรต่าง ๆ ทั้งจาก textbox,hidden field และอื่น ๆ

2.cookies บนฝั่ง browser

3.id cookies ที่ชี้ข้อมูล session ชุดนั้น ๆ ก็ cookies นั่นแหละ

4.file ที่ run ข้อมูลจริง ๆ บางครั้งมันจะมี redirect ไปยัง file ที่ run จริง ๆ อยู่ อันนี้ต้องใช้ live http headers จะเห็นชัดเจน

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

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 01 ตุลาคม 2007, 19:47:46 »

จากที่ผมอ่านคำถามของคุณ okgofun แล้ว

สรุปที่ต้องการคือต้องการให้ session ของ a.com
สามารถดูใน b.com ด้วยใช่หรือไม่ครับ ?

มีวิธีหนึ่งครับคือ
1. คุณต้องสร้าง session ตัวหนึ่งไว้เป็น session กลางที่ใช้ตรวจสอบบุคคลไว้
2. คุณก็เอา session ทั้งหมดใน a.com เข้า mysql ส่วนกลางไว้ก่อนที่ b.com สามารถเข้าถึงได้ด้วย
3. คุณก็ส่ง session ข้อ1ลงไปใน cookies ส่งไปที่ b.com เลย
ซึ่งก็คือต้องใช้คำสั่ง setcookie ส่งค่าข้ามโดเมน
setcookie("TestCookie", "ค่าคุ๊กกี้", time()+3600, "", ".b.com");
สังเกตที่ตัวหนานะครับ นั้นแหละ
4. ที่นี้ที่ b.com คุณก็ต้องเขียนระบบให้มันอ่านคุ๊กกี้เอาค่าตรวจสอบเนี่ย
ไปเทียบกับที่เก็บไว้ใน mysql แล้วเรียกออกมา

ที่นี้คุณก็น่าจะสามารถส่งต่อค่าข้ามเว้บได้แล้วครับ

ถ้าผมเข้าใจจุดประสงค์ถูกนะครับ  Smiley
« แก้ไขครั้งสุดท้าย: 01 ตุลาคม 2007, 20:13:32 โดย EThaiZone » บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #14 เมื่อ: 01 ตุลาคม 2007, 20:11:27 »

อ่านแล้วงงดีแฮะ cookie พอรู้เรื่อง แต่ session นี่โคตรปวดหัวเลย  Tongue
บันทึกการเข้า

minute1
ก๊วนเสียว
*

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

กระทู้: 385



ดูรายละเอียด
« ตอบ #15 เมื่อ: 01 ตุลาคม 2007, 21:16:03 »

อ้าว... ตกลงนี่เขียนโปรแกรมเองทั้งสองฝังเลยใช่ไหม?
ถ้าอย่างนั้นมันขึ้นกับการ Design ของตัวคุณเองแล้วละ
วิธีการเยอะแยะ เลือกอันที่มันง่ายซิ ทำไมทำยากจัง
ใช้ Database อย่างคุณ EThaiZone ก็เสร็จแล้ว

ถ้าอย่างยากใช้แบบสองของคุณ amaudy
ต้องทำ certified ทั้งสอง host แล้วแลก certified กัน
secure สูงมาก พวก Software ของ bank จะใช้แบบนี่ละ
รู้สึกเขาจะเรียกว่า Three-way handshake มัง

ผมเอาง่ายๆดีกว่าปวดหัวแทน  Grin Grin

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

เพราะอากาศเปลี่ยนแปลงบ่อย ดูแลสุขภาพให้ดีนะครับ...ดูแลให้ดี ทั้งสุขภาพกาย และ สุขภาพใจ   
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #16 เมื่อ: 01 ตุลาคม 2007, 22:24:32 »

ถ้าอย่างยากใช้แบบสองของคุณ amaudy
ต้องทำ certified ทั้งสอง host แล้วแลก certified กัน
secure สูงมาก พวก Software ของ bank จะใช้แบบนี่ละ
รู้สึกเขาจะเรียกว่า Three-way handshake มัง



ลองหาพวก encrypt แบบชนิดต้องมีคีย์ไว้ใช้เข้า/ถอดรหัสมาใช้ดูสิครับ

เห็นมีเป็น class หลายตัว เอามาฝากเผื่ออยากจะทำ

โค๊ด:
http://www.phpclasses.org/browse/class/20.html

รับรอง อย่างมันส์ครับ  Cheesy
บันทึกการเข้า

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

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

กระทู้: 1,212



ดูรายละเอียด เว็บไซต์
« ตอบ #17 เมื่อ: 01 ตุลาคม 2007, 23:58:24 »

^
^
^
 Cry แจ๋วเลย
บันทึกการเข้า

okgofun
ก๊วนเสียว
*

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

กระทู้: 396



ดูรายละเอียด
« ตอบ #18 เมื่อ: 02 ตุลาคม 2007, 12:27:23 »

อ่ามัวแต่อ่านหนังสือ เลยไม่ได้เข้ามาดู

ของคุณทุกๆคนมากๆครับ กับไอเดียดีๆ

เอ่อ แบบที่คุณ Ethaizone เข้าใจคำถามผมนั้นถูกต้องแล้วครับ อยากรับค่าจาก session อีกจาก server แต่อ่านวิธีการของหลายๆท่านทำให้เข้าใจได้ว่า คงไม่มีทางดึงค่าตรงๆจาก session ของ server อีกเครื่องได้นี่เอง(เรื่องความปลอดภัย)

งั้นคงต้องประยุกข์วิธีการตามที่พี่ท่านแนะนำกันมา ขอบพระคุณมากครับ
บันทึกการเข้า

จะต้องทำให้ได้เดือนละอย่างต่ำ $1,000 แล้วก็ไม่โดนแบน
amaudy
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,212



ดูรายละเอียด เว็บไซต์
« ตอบ #19 เมื่อ: 02 ตุลาคม 2007, 12:35:52 »


โชคดีครับ
เพื่ออนาคตของชาติ ต้องช่วยๆกันครับ
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์