我想用php: 登錄這個page但是當我嘗試用php登錄時出現錯誤。用php curl登錄instagram
當我嘗試登錄下面的代碼總是在改變。所以我無法登錄。
的代碼是:
<input type="hidden" name="csrfmiddlewaretoken" value="728a44ea6f15dee51406b0c82be3a03b"/>
感謝您提前幫助
我想用php: 登錄這個page但是當我嘗試用php登錄時出現錯誤。用php curl登錄instagram
當我嘗試登錄下面的代碼總是在改變。所以我無法登錄。
的代碼是:
<input type="hidden" name="csrfmiddlewaretoken" value="728a44ea6f15dee51406b0c82be3a03b"/>
感謝您提前幫助
必須與形式打開網頁,並宣讀「csrfmiddlewaretoken」的值轉換爲VAR(與例如正則表達式)。
您還必須存儲會話cookie(curl具有將cookie存儲在容器文件中的方法,或者您可以通過解析答案標題並存儲cookie值以將其設置在請求標題中供以後使用要求)。
然後,您可以在您的登錄請求(需要發送會話cookie)中設置「csrfmiddlewaretoken」。
很明顯,Instagram免受跨網站請求僞造。你可以閱讀關於這個攻擊的所有信息here。
其實Instagram的傢伙不希望你提交登錄表單而不先顯示它。這就是csrfmiddlewaretoken適用於:當表單被顯示時,他們給你(隨機值),當你提交它時,他們檢查你是否返回了他們給你的那個。請參閱OWASP cross-site request forgery prevention cheat sheet。
所以基本上你要做的是請求登錄表單,從它獲取令牌,然後在第二個請求中登錄並在其中包含該令牌。
(也許他們做一些雙重檢查存在,在這種情況下,你必須兩次送令牌:無論是在您的文章數據作爲cookie)
這CSRF令牌被改變爲一個很好的理由。你爲什麼不使用Instagram的OAuth功能? http://instagram.com/developer/authentication/ – richsage 2013-03-06 09:22:13
我認爲這是違反他們的使用條款,使用他們的api – 2013-03-06 09:22:17