成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

python實(shí)現(xiàn)模擬登陸

archieyang / 3347人閱讀

摘要:參考文章請(qǐng)點(diǎn)擊這里模擬登陸參考文章使用的,感覺沒有用起來方便。到此,所需要的都取得了,接下來就用把參數(shù),,請(qǐng)求頭帶上,的加上查詢字符串,就可以成功模擬登陸了。

這次想試一試模擬登陸,以為應(yīng)該會(huì)很順利,但是遇到了各種問題,所以記錄總結(jié)一下。
參考文章:請(qǐng)點(diǎn)擊這里

模擬登陸segmentfault

參考文章使用的node.js,感覺沒有python用起來方便。

工具

python2.7

Chrome瀏覽器

requests

PyV8

lxml

思路

首先進(jìn)入segmentfault的登陸頁面。
可以隨便輸入錯(cuò)誤密碼點(diǎn)擊登陸,使用Chrome查看請(qǐng)求發(fā)到了哪個(gè)url。
另外看post的參數(shù),這里有三個(gè):remember, usernamepassword。
然后可以順便按照Requests Headers把請(qǐng)求頭設(shè)置好(照抄到代碼里)。

requests庫的session對(duì)象能夠幫我們跨請(qǐng)求保持某些參數(shù),也會(huì)在同一個(gè)session實(shí)例發(fā)出的所有請(qǐng)求之間保持cookies。

使用:

    # 創(chuàng)建一個(gè)session對(duì)象 
    session = requests.session()
    # 用session對(duì)象發(fā)出get請(qǐng)求
    response = session.get("https://segmentfault.com/user/login")
    # 獲取cookie
    cookies = response.cookies

設(shè)置了請(qǐng)求頭,cookie也拿到了,看看post的url

發(fā)現(xiàn)這段url后面是帶了查詢字符串的,每次發(fā)請(qǐng)求都會(huì)變化。
只有明白它是如何生成的才能取得我們要post的url,這里我卡了好久,去尋找答案,才找到了參考文章,這里面提供了思路獲取js中生成的token。

login.min.js中查詢字符串 "_=" (Chrome f12下使用快捷鍵Crtl+F可以打開查詢窗口),因?yàn)樽⒁獾絬rl是https://segmentfault.com/api/user/login?_=[querystring]

發(fā)現(xiàn)要post的url是根url加上"?_="再加上a._.
可以想到a是一個(gè)對(duì)象,_a這個(gè)對(duì)象的一個(gè)屬性。
可以找到:

于是發(fā)現(xiàn)了a._window.SF.token

取得token

分析:回到login文件發(fā)現(xiàn)tokenhtml中的script標(biāo)簽中一個(gè)函數(shù)生成的,而html可以使用requests.get取得,然后可以通過pythonre模塊用正則表達(dá)式提取出所需要的函數(shù),這時(shí)還需要python中的PyV8模塊來執(zhí)行js函數(shù)。
執(zhí)行:分析html的DOM節(jié)點(diǎn),發(fā)現(xiàn)函數(shù)的位置,使用xpath取得那個(gè)script標(biāo)簽

    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"))

寫一個(gè)get_token函數(shù)取得token(這里要用到PyV8模塊實(shí)現(xiàn)pythonJavaScript的交互)
這個(gè)DOM目前是這樣的:

我們需要的是第一個(gè)函數(shù),在get_token()中用正則表達(dá)式提取出來。

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,請(qǐng)求頭帶上,post的url加上查詢字符串,就可以成功模擬登陸了。

如有錯(cuò)誤請(qǐng)指正~謝謝~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44612.html

相關(guān)文章

  • 超詳細(xì)的Python實(shí)現(xiàn)新浪微博模擬登陸(小白都能懂)

    摘要:可能有的老手覺得我寫得很啰嗦,但其實(shí)很多新手可能都不知道這些細(xì)節(jié),所以我把我在分析新浪微博模擬登陸的過程全寫了出來。 這篇文章于去年4月發(fā)布在我的簡書,現(xiàn)在把它放到這里,主要是為了宣傳自己的分布式微博爬蟲。下面是主要內(nèi)容,希望能幫到有這個(gè)需求的朋友 最近由于需要一直在研究微博的爬蟲,第一步便是模擬登陸,從開始摸索到走通模擬登陸這條路其實(shí)還是挺艱難的,需要一定的經(jīng)驗(yàn),為了讓朋友們以后少...

    Aldous 評(píng)論0 收藏0
  • Python爬蟲學(xué)習(xí):微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法

    摘要:微信知乎新浪等主流網(wǎng)站的模擬登陸爬取方法摘要微信知乎新浪等主流網(wǎng)站的模擬登陸爬取方法。先說說很難爬的知乎,假如我們想爬取知乎主頁的內(nèi)容,就必須要先登陸才能爬,不然看不到這個(gè)界面。圖片描述知乎需要手機(jī)號(hào)才能注冊(cè)登陸。 微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法摘要:微信、知乎、新浪等主流網(wǎng)站的模擬登陸爬取方法。 網(wǎng)絡(luò)上有形形色色的網(wǎng)站,不同類型的網(wǎng)站爬蟲策略不同,難易程度也不一樣。從是...

    Kahn 評(píng)論0 收藏0
  • 超詳細(xì)的Python實(shí)現(xiàn)百度云盤模擬登陸(模擬登陸進(jìn)階)

    摘要:方法不僅適用于百度云,別的一些比較難以模擬登陸的網(wǎng)站都可以按照這種方式分析。本文要求讀者具有模擬登陸主要是抓包和閱讀代碼和密碼學(xué)的基本知識(shí)。和模擬登陸微博的分析流程一樣,我們首先要做的是以正常人的流程完整的登錄一遍百度網(wǎng)盤。 這是第二篇從簡書搬運(yùn)過來的文章(大家別誤會(huì),是我原創(chuàng)的)。因?yàn)榍耙黄恼?,我看反響還挺好的,所以把這篇也搬運(yùn)過來了,其實(shí)目的還是為宣傳自己的分布式微博爬蟲(該項(xiàng)目...

    CarterLi 評(píng)論0 收藏0
  • Python 爬蟲之模擬登陸CSND

    摘要:它也會(huì)在同一個(gè)實(shí)例發(fā)出的所有請(qǐng)求之間保持,期間使用的功能。而主要是方便解析源碼,從中獲取請(qǐng)求需要的一些參數(shù)完整代碼請(qǐng)輸入賬號(hào)請(qǐng)輸入密碼項(xiàng)目地址模擬京東登錄吐槽群 Python 爬蟲之模擬登陸CSND 工具 基本的腳本語言是Python,雖然不敢說是最好的語言,至少是最好的之一(0.0),用模擬登陸,我們需要用到多個(gè)模塊,如下: requests BeautifulSoup requ...

    firim 評(píng)論0 收藏0
  • Python使用cookielib、urllib2和pyquery模擬登陸本科教學(xué)網(wǎng)并抓取數(shù)據(jù)

    摘要:原文鏈接使用和模擬登陸本科教學(xué)網(wǎng)并抓取數(shù)據(jù)剛才好無聊,突然想起來之前做一個(gè)課表的點(diǎn)子,于是百度了起來。使用現(xiàn)在,我們已經(jīng)登錄了本科教學(xué)網(wǎng),然后結(jié)合之前的解析就可以獲取網(wǎng)頁內(nèi)的課表了。 原文鏈接:《Python使用cookielib、urllib2和pyquery模擬登陸本科教學(xué)網(wǎng)并抓取數(shù)據(jù)》 剛才好無聊,突然想起來之前做一個(gè)課表的點(diǎn)子,于是百度了起來。 PyQuery 剛...

    tuomao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<