摘要:參考文章請點擊這里模擬登陸參考文章使用的,感覺沒有用起來方便。到此,所需要的都取得了,接下來就用把參數(shù),,請求頭帶上,的加上查詢字符串,就可以成功模擬登陸了。
這次想試一試模擬登陸,以為應(yīng)該會很順利,但是遇到了各種問題,所以記錄總結(jié)一下。
參考文章:請點擊這里
參考文章使用的node.js,感覺沒有python用起來方便。
工具python2.7
Chrome瀏覽器
requests
PyV8
lxml
思路首先進入segmentfault的登陸頁面。
可以隨便輸入錯誤密碼點擊登陸,使用Chrome查看請求發(fā)到了哪個url。
另外看post的參數(shù),這里有三個:remember, username 和 password。
然后可以順便按照Requests Headers把請求頭設(shè)置好(照抄到代碼里)。
requests庫的session對象能夠幫我們跨請求保持某些參數(shù),也會在同一個session實例發(fā)出的所有請求之間保持cookies。
使用:
# 創(chuàng)建一個session對象 session = requests.session() # 用session對象發(fā)出get請求 response = session.get("https://segmentfault.com/user/login") # 獲取cookie cookies = response.cookies
設(shè)置了請求頭,cookie也拿到了,看看post的url
發(fā)現(xiàn)這段url后面是帶了查詢字符串的,每次發(fā)請求都會變化。
只有明白它是如何生成的才能取得我們要post的url,這里我卡了好久,去尋找答案,才找到了參考文章,這里面提供了思路獲取js中生成的token。
在login.min.js中查詢字符串 "_=" (Chrome f12下使用快捷鍵Crtl+F可以打開查詢窗口),因為注意到url是https://segmentfault.com/api/user/login?_=[querystring]
發(fā)現(xiàn)要post的url是根url加上"?_="再加上a._.
可以想到a是一個對象,_是a這個對象的一個屬性。
可以找到:
于是發(fā)現(xiàn)了a._是window.SF.token
取得token分析:回到login文件發(fā)現(xiàn)token是html中的script標簽中一個函數(shù)生成的,而html可以使用requests.get取得,然后可以通過python的re模塊用正則表達式提取出所需要的函數(shù),這時還需要python中的PyV8模塊來執(zhí)行js函數(shù)。
執(zhí)行:分析html的DOM節(jié)點,發(fā)現(xiàn)函數(shù)的位置,使用xpath取得那個script標簽
response = requests.get("https://segmentfault.com/user/login") sel = html.fromstring(response.text) s = sel.xpath("/html/body/script[8]/text()")[0] st = str(s.encode("utf-8"))
寫一個get_token函數(shù)取得token(這里要用到PyV8模塊實現(xiàn)python和JavaScript的交互)
這個DOM目前是這樣的:
我們需要的是第一個函數(shù),在get_token()中用正則表達式提取出來。
def get_token(st): h = re.match("[sS]*(function (w) {[sS]+? })(window);", st).group() with PyV8.JSContext() as ctxt: ctxt.eval("""window={}; """ + h) vars = ctxt.locals token_var = vars.window.SF.token print token_var return token_var
到此,所需要的都取得了,接下來就用sesssion.post把參數(shù),cookie,請求頭帶上,post的url加上查詢字符串,就可以成功模擬登陸了。
如有錯誤請指正~謝謝~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44612.html
摘要:可能有的老手覺得我寫得很啰嗦,但其實很多新手可能都不知道這些細節(jié),所以我把我在分析新浪微博模擬登陸的過程全寫了出來。 這篇文章于去年4月發(fā)布在我的簡書,現(xiàn)在把它放到這里,主要是為了宣傳自己的分布式微博爬蟲。下面是主要內(nèi)容,希望能幫到有這個需求的朋友 最近由于需要一直在研究微博的爬蟲,第一步便是模擬登陸,從開始摸索到走通模擬登陸這條路其實還是挺艱難的,需要一定的經(jīng)驗,為了讓朋友們以后少...
摘要:微信知乎新浪等主流網(wǎng)站的模擬登陸爬取方法摘要微信知乎新浪等主流網(wǎng)站的模擬登陸爬取方法。先說說很難爬的知乎,假如我們想爬取知乎主頁的內(nèi)容,就必須要先登陸才能爬,不然看不到這個界面。圖片描述知乎需要手機號才能注冊登陸。 微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法摘要:微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法。 網(wǎng)絡(luò)上有形形色色的網(wǎng)站,不同類型的網(wǎng)站爬蟲策略不同,難易程度也不一樣。從是...
摘要:方法不僅適用于百度云,別的一些比較難以模擬登陸的網(wǎng)站都可以按照這種方式分析。本文要求讀者具有模擬登陸主要是抓包和閱讀代碼和密碼學的基本知識。和模擬登陸微博的分析流程一樣,我們首先要做的是以正常人的流程完整的登錄一遍百度網(wǎng)盤。 這是第二篇從簡書搬運過來的文章(大家別誤會,是我原創(chuàng)的)。因為前一篇文章,我看反響還挺好的,所以把這篇也搬運過來了,其實目的還是為宣傳自己的分布式微博爬蟲(該項目...
摘要:它也會在同一個實例發(fā)出的所有請求之間保持,期間使用的功能。而主要是方便解析源碼,從中獲取請求需要的一些參數(shù)完整代碼請輸入賬號請輸入密碼項目地址模擬京東登錄吐槽群 Python 爬蟲之模擬登陸CSND 工具 基本的腳本語言是Python,雖然不敢說是最好的語言,至少是最好的之一(0.0),用模擬登陸,我們需要用到多個模塊,如下: requests BeautifulSoup requ...
摘要:原文鏈接使用和模擬登陸本科教學網(wǎng)并抓取數(shù)據(jù)剛才好無聊,突然想起來之前做一個課表的點子,于是百度了起來。使用現(xiàn)在,我們已經(jīng)登錄了本科教學網(wǎng),然后結(jié)合之前的解析就可以獲取網(wǎng)頁內(nèi)的課表了。 原文鏈接:《Python使用cookielib、urllib2和pyquery模擬登陸本科教學網(wǎng)并抓取數(shù)據(jù)》 剛才好無聊,突然想起來之前做一個課表的點子,于是百度了起來。 PyQuery 剛...
閱讀 2892·2021-10-14 09:42
閱讀 1245·2021-09-24 10:32
閱讀 2952·2021-09-23 11:21
閱讀 2840·2021-08-27 13:10
閱讀 3327·2019-08-29 18:41
閱讀 2195·2019-08-29 15:16
閱讀 1194·2019-08-29 13:17
閱讀 893·2019-08-29 11:22