2013-03-06 397 views
1

我想用php: 登錄這個page但是當我嘗試用php登錄時出現錯誤。用php curl登錄instagram

當我嘗試登錄下面的代碼總是在改變。所以我無法登錄。

的代碼是:

<input type="hidden" name="csrfmiddlewaretoken" value="728a44ea6f15dee51406b0c82be3a03b"/> 

感謝您提前幫助

+1

這CSRF令牌被改變爲一個很好的理由。你爲什麼不使用Instagram的OAuth功能? http://instagram.com/developer/authentication/ – richsage 2013-03-06 09:22:13

+1

我認爲這是違反他們的使用條款,使用他們的api – 2013-03-06 09:22:17

回答

0

必須與形式打開網頁,並宣讀「csrfmiddlewaretoken」的值轉換爲VAR(與例如正則表達式)。

您還必須存儲會話cookie(curl具有將cookie存儲在容器文件中的方法,或者您可以通過解析答案標題並存儲cookie值以將其設置在請求標題中供以後使用要求)。

然後,您可以在您的登錄請求(需要發送會話cookie)中設置「csrfmiddlewaretoken」。

1

很明顯,Instagram免受跨網站請求僞造。你可以閱讀關於這個攻擊的所有信息here

其實Instagram的傢伙不希望你提交登錄表單而不先顯示它。這就是csrfmiddlewaretoken適用於:當表單被顯示時,他們給你(隨機值),當你提交它時,他們檢查你是否返回了他們給你的那個。請參閱OWASP cross-site request forgery prevention cheat sheet

所以基本上你要做的是請求登錄表單,從它獲取令牌,然後在第二個請求中登錄並在其中包含該令牌。

(也許他們做一些雙重檢查存在,在這種情況下,你必須兩次送令牌:無論是在您的文章數據作爲cookie)