摘要:上一篇用模擬請(qǐng)求,最后沒有拿到。對(duì)于跳轉(zhuǎn)是由網(wǎng)頁中的腳本所控制的,使用這種模擬真實(shí)瀏覽器行為,可以更容易保證其完成整個(gè)登錄行為,相對(duì)地因?yàn)槟M的成本速度會(huì)慢一些。
上一篇用requests模擬請(qǐng)求,最后沒有拿到cookies。今天偶爾看一篇HTTP相關(guān)的文章,發(fā)現(xiàn)在某些請(qǐng)求返回的header中會(huì)有set-cookie字段,很明顯之前的失敗應(yīng)該是沒有接收到包含這個(gè)字段的response。自己嘗試人肉登錄發(fā)現(xiàn),cookie中的sf_remember字段是登錄成功后跳轉(zhuǎn)到首頁時(shí)進(jìn)行set-cookie的,而不是post的時(shí)候設(shè)置的。所以今天為了更好地模擬請(qǐng)求,使用request.Session來進(jìn)行,這樣cookie就不用自己去同步了,能更好地模擬瀏覽器行為
def _get_user_cookies(self): s = requests.Session() s.headers.update(headers) rep = s.get(target_url) post_url = "%s%s?_=%s" % (target_url, login_api_path, self.get_req_from_html(rep.text)) data = { "mail": self.username, "password": self.passwd, } s.post(post_url, data=data)
通過反復(fù)登陸,我發(fā)現(xiàn)必須帶要帶headers,而headers必須的字段只有Referer,這樣才能post成功,成功后會(huì)經(jīng)過一個(gè)302重定向到首頁,經(jīng)歷這個(gè)過程便能登陸成功。我查看登陸成功后的cookies,如下:
]>
并沒有sf_remember這個(gè)字段,可能是因?yàn)槲以趐ost的時(shí)候沒有使用remember字段(記住該用戶那個(gè)),說明之前想當(dāng)然認(rèn)為該字段就是標(biāo)記登錄是不可靠的,標(biāo)記登錄的很有可能只是PHPSESSID這個(gè)值而已。下圖登錄后的所有cookies
因此模擬登錄及備份文章就不需要phantomjs了,只用requests就足夠,當(dāng)然這只是對(duì)于segmemtfault來說,對(duì)于微博那種動(dòng)態(tài)的,說不定就只能用Phantomjs,當(dāng)然能分析出請(qǐng)求過程就能最大限度地使用簡(jiǎn)單方法來做自己想做的事
代碼在這兒,增加了打印文章信息及耗時(shí)信息的功能,截圖如下:
對(duì)于登錄(或其它任何post行為)時(shí)由登錄鏈接直接進(jìn)行跳轉(zhuǎn)的(跳轉(zhuǎn)次數(shù)不限),可以直接用requests模擬,它的Session完全可以跟隨這種跳轉(zhuǎn)行為。
對(duì)于跳轉(zhuǎn)是由網(wǎng)頁中的js腳本所控制的,使用phantomjs這種模擬真實(shí)瀏覽器行為,可以更容易保證其完成整個(gè)登錄行為,相對(duì)地因?yàn)槟M的成本速度會(huì)慢一些。而且這種類型,理論上也是可以用requests模擬出來的,但是需要事先去分析導(dǎo)致跳轉(zhuǎn)的js代碼,會(huì)比較麻煩且不一定能成為,如果成功則可以提速。比如網(wǎng)易云音樂的藝人頁面,請(qǐng)求了兩個(gè)doc,其實(shí)只有第二個(gè)是需要的。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/37674.html
摘要:繼續(xù)嘗試,成功,但是還是未登錄狀態(tài)。如前所說,用模擬登錄拿到,然后帶上去取文章備份就好了,用加了點(diǎn)并發(fā),代碼放到上了,地址,歡迎使用及拍磚以上 直接post登錄失敗 一般的網(wǎng)站確實(shí)直接post之后就登錄成功了,然后拿到cookie想怎么玩就怎么玩。不過的確世事難料,失敗在所難免。 首先是人肉登錄,用chrome的network欄查看post了些什么東西,有三項(xiàng): mail passw...
摘要:并可以實(shí)現(xiàn),功能對(duì)用戶進(jìn)行磁盤配額,每個(gè)用戶的可用空間不同使用模塊檢查用戶目錄的空間上文件大小,如果大于就不讓傳輸。不允許超過磁盤配額。文件的傳輸過程中顯示精度條。用戶價(jià)值實(shí)現(xiàn)一套自己的服務(wù)端與客戶端。 MYFTP是我寫的模擬FTP服務(wù)端和客戶端交互的程序。通過使用socket去模擬ftp的文件下載與上次兩個(gè)核心功能。并不是使用真實(shí)FTP協(xié)議去實(shí)現(xiàn)。 基本需求 用戶加密認(rèn)證 # ha...
摘要:爬蟲是我接觸計(jì)算機(jī)編程的入門。練練練本文推薦的資源就是以項(xiàng)目練習(xí)帶動(dòng)爬蟲學(xué)習(xí),囊括了大部分爬蟲工程師要求的知識(shí)點(diǎn)。拓展閱讀一文了解爬蟲與反爬蟲最后,請(qǐng)注意,爬蟲的工作機(jī)會(huì)相對(duì)較少。 爬蟲是我接觸計(jì)算機(jī)編程的入門。哥當(dāng)年寫第一行代碼的時(shí)候別提有多痛苦。 本文旨在用一篇文章說透爬蟲如何自學(xué)可以達(dá)到找工作的要求。 爬蟲的學(xué)習(xí)就是跟著實(shí)際項(xiàng)目去學(xué),每個(gè)項(xiàng)目會(huì)涉及到不同的知識(shí)點(diǎn),項(xiàng)目做多了,自然...
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
閱讀 1424·2021-11-24 09:39
閱讀 3701·2021-11-24 09:39
閱讀 1885·2021-11-16 11:54
閱讀 1475·2021-09-30 09:47
閱讀 1732·2021-09-26 10:16
閱讀 2356·2021-09-22 15:33
閱讀 1470·2021-09-14 18:01
閱讀 2456·2021-09-07 09:59