2009-12-13 110 views
1

我想創建我自己的個人登錄網關到Gmail/Facebook /任何其他網站。在這個網關中,我輸入了我的主用戶名和密碼,然後我可以選擇登錄(gmail/facebook/etc)而無需輸入這些用戶名,因爲它們存儲在服務器上。Gmail/Facebook沒有用戶名/密碼 - PHP登錄標題問題

我試圖通過使用cURL來發送POST請求,並在常規登錄期間使用在Firefox中發送的標題和發佈數據來實現此目的。但是,這不適用於Facebook或Gmail。

有沒有人試過這個或有一個想法,爲什麼這不起作用?

謝謝。

//編輯 我在想,它不起作用的問題在於,將curl請求發送到gmail的php服務器的IP地址與我的瀏覽器不同,因此, gmail服務器被反饋到瀏覽器,它仍然無法進行身份驗證。

或者,我使用curl發送給Gmail服務器的cookie實際上是根據時間而改變的。

+0

你如何確定「它不工作」?既然你沒有得到預期的結果,會發生什麼?你如何處理從遠程服務器得到的響應? – Quentin 2009-12-13 10:24:21

+0

你想在這裏得到什麼結果?您是否試圖在登錄到您的頁面後完成該操作,您將自動在瀏覽器中登錄到Gmail和Facebook?如果是這樣,那麼cURL不是正確的方法,因爲你正在登錄你的服務器而不是你的瀏覽器...... – 2009-12-13 12:44:22

+0

謝謝大衛我的意思是發送到gmail服務器的請求頭不認證我登錄。 gmail服務器提供的響應直接返回給瀏覽器。 – Tony 2009-12-13 13:20:54

回答

1

根據您對我的評論的回覆,cURL對您的問題毫無用處。你需要使用你的服務(gmail,facebook,...)來驗證你的瀏覽器,你現在正在做的是驗證你的腳本(或你的服務器)。

你將不得不使用JavaScript來完成你想要的。如果您將服務的憑證存儲在服務器上,那麼一旦成功登錄到您的網頁,就會將其發送回客戶端。然後,您可以創建一個隱藏的iframe,將「src」屬性設置爲所選服務的登錄頁面。加載iframe後,您可以將登錄信息(用戶名/密碼)填入相應的字段並提交表單。完成此操作後,您應該可以使用您的服務。 可能還有一些其他的技術,但這是第一個想到的...

+0

所以你的意思是說以下操作將不起作用:首先使用我的用戶/密碼登錄到我的腳本,一旦我的腳本檢查了此信息,然後使用curl發送POST請求並使用存儲的用戶/密碼將響應標題和數據傳回給瀏覽器這是因爲發佈的請求是從服務器而不是瀏覽器發送的嗎? – Tony 2009-12-13 14:20:36

+0

不能使用它。瀏覽器必須創建請求,以便它獲取正確的cookie,並且不能爲其他域創建cookie – 2009-12-13 14:33:39

+0

感謝您的回覆。所以關鍵在於cookie的域特定屬性。 – Tony 2009-12-13 14:51:43

0

這不一定是可行的,Gmail和Facebook可能會做非常簡單的檢查來查看引薦者是誰以及何時來自您的網站而不是他們自己的登錄頁面拒絕登錄。這是基本的安全檢查。

你需要看看他們的api,看看你是否可以做任何事情,或者你可以使用javascript和firefox插件將你的用戶名和密碼寫入webform然後提交表單,有點黑客但是可能會做你想做的。

+0

感謝您的回覆。我瞭解你的選擇。不過,我真正想要做的是,我想登錄到Gmail,而無需從任何計算機輸入真實的用戶名/密碼。 此外,我相信登錄Gmail/Facebook的基本原理是發送正確的請求標題和發佈數據。我認爲它仍然是可行的? – Tony 2009-12-13 09:11:59

0

沒有理由爲什麼你試過的cURL方法不能使用正確的頭文件。玩像digg.com這樣的網站時,我發現我需要一個有效的用戶代理標題,當然還有一個適當的REFERER網址,如果整體效果最好,請繼續使用捲曲技術。使用一個http頭文件加載到Firefox來查看你發送給gmail的頭文件,然後完全僞造它們。

+0

感謝您的回覆。問題在於請求標頭是由PHP發送的,我只能看到Firefox上的響應請求。該響應實際上來自登錄頁面,該頁面要求我登錄,因爲我發送的標題不正確。所以它有點難以理解爲什麼這不起作用。 – Tony 2009-12-13 09:25:28

+0

我的意思是使用FF來正常登錄一次,看看請求和響應,複製該文件並嘗試在cURL中模擬這些頭文件 – 2009-12-13 09:28:49

+0

感謝這就是我所做的。我從ff的LiveHttpHeader插件中複製了請求標頭,但是這組標頭看起來並沒有使事情正確。我被卡住了:( – Tony 2009-12-13 09:32:31

0

試着用螢火蟲找出答案的迴應,它應該總是給你最好的領先。

我沒有看到它無法工作的原因,我閱讀了我的Gmail和Curl的分析。

+0

感謝您的回覆。問題是請求標頭是由PHP發送的,我只能在Firefox上看到響應請求。請問是否需要發送特殊標頭?我懷疑可能是瀏覽器錯過了一些cookie發送後,PHP發送請求? – Tony 2009-12-13 09:26:40

+0

你應該檢查這個資源:http://www.askapache.com/webmaster/login-google-analytics.html應該作爲一個很好的領導 – 2009-12-13 09:39:27

0

您是否配置了curl來接受和存儲cookie?通常,一旦您通過在線服務進行身份驗證,它就會向您發送一個cookie形式的安全令牌,您可以隨後發送每個請求以驗證您的授權。