【解決】err_no=100023
之前遇到一個問題,token讀取不到,讀到的是“the fisrt two args should be string type 0,1”,後來發現是沒有攜帶BAIDUID的cookies去訪問http://passport.baidu.com/v2/api/,故得不到token的值。
然後用python自帶的urllib2和cookiesJar嘗試登入百度,明明設定了Connection為Keep-Alive,抓包的時候還是發現Connection為close。
查了一下,有的網友說urllib2不支援長連線,推薦requests庫。而且response body還是“err_no=100023”,我輸出密碼抓了一次包,發現err_no=4,看來不是密碼的問題。頭疼!
通過訪問“www.baidu.com”獲取到BAIDUID的cookies,
之後通過攜帶BAIDUID訪問http://passport.baidu.com/v2/api/又獲取到token,
最後通過攜帶token訪問http://passport.baidu.com/v2/api/?login又獲取到rsakey,
按理說都齊活了,為什麼會出現err_no=100023的問題?
換成requests後,問題依舊,只不過connection不是close了。
===============更新與2014.04.27===========
送走老弟終於有時間搗鼓這個err了。
通過用httpdebugger除錯工具對比過後,原來是我在login——也就是最後一步登入的時候沒有攜帶cookie,五個cookie:BAIDUID、BIDUPSID、H_PS_PSSID、HOSUPORT和UBI。如果你登入遇到不是err_no=4的錯誤的話,那說明肯定是你的cookie有問題,要麼就是沒有開啟cookies所以不能登入。靜下心來仔細檢查一下,肯定會發現的。
不過新問題也出現了,那就是err_no=4的問題,這是密碼和使用者名稱不匹配的問題。我是傳遞的明碼,所以會出現err_no=4也在意料之中,下一步就想象怎麼解決獲取加密密碼的問題。