日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python课设总结_Python技术分享课总结:用Python模拟知乎自动登录

發布時間:2023/12/2 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python课设总结_Python技术分享课总结:用Python模拟知乎自动登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:Python技術分享課總結:用Python模擬知乎自動登錄

Python語言是由Guido van Rossum大牛在1989年發明,它是當今世界最受歡迎的計算機編程語言之一,也是一門“學了有用、學了能用、學會能久用”的計算生態語言。

為此,CSDN作為國內最大的IT中文社區,特向廣大Python愛好者開設了Python學習班,幫助大家在學習的道路上少走彎路,事半功倍。3月29號晚上8點,我們特邀請知名Python技術專家劉志軍老師在班級里舉行分享活動。

劉志軍,6年開發經驗,曾就職中興、博雅互動。擅長Web技術架構,對爬蟲、數據挖掘領域興趣濃厚。目前在一家大型醫藥集團從事數據分析工作。微信公眾號:Python之禪(vttalk)。

以下為昨晚的分享內容:

前言

文章會按照先原理,再實踐的方式來講解,希望可以做到知其然且知其所以然,讀這篇文章前,你需要對 HTTP 協議、 Cookies、跨站請求偽造(CSRF)有一定了解,如果你不太了解這些概念,文末給出了兩個鏈接推薦閱讀。

在做爬蟲時,有些頁面在登錄之前,是被禁止抓取的,比如我們查看知乎的話題頁面 https://www.zhihu.com/topic 就要求我 們登錄。

當提到「登錄」時,就不得不提 Cookie 技術,而說起 Cookie 技術時,還得從 HTTP 協議說起。當然在這里我不會把HTTP 從0到1講一遍,你只需要了解基本的 HTTP 流程是什么就可以了,推薦閱讀我之前在公眾號「Python之禪」中寫的另一篇文章一次完整的HTTP請求過程HTTP 是一種無狀態的協議, 協議本身不保留之前的一切請求信息和響應信息,也就是說,對于一個剛剛發送了HTTP 請求的客戶端再次發起請求時,服務端并不知道之前訪問過。這樣設計的理由是為了更快地處理大量事務,確保協議的可伸縮性,而特意把 HTTP 協議設計如此簡單。

但是,無狀態導致業務處理就變得棘手了,一個簡單的例子就是網上購物的時候,當我在一個頁面把商品加入購物車的時候,正當我要跳轉到支付頁面時,如果沒有一種機制來保持我的登錄狀態,那么之前選的商品全部丟失了。

因此,為了在無狀態的 HTTP 協議之上維護會話狀態,使服務?可以知道當前是和哪個客戶端打交道,于是Cookie 技術應運而生 ,Cookie 通俗的理解就是服務端分配給客戶端的一個標識。

Cookie原理其實也非常簡單,總共4個步驟維護HTTP會話。

1. 瀏覽?第一次發起 HTTP 請求時,沒有攜帶任何 Cookie 信息,服務?收到請求并返回給瀏覽?的HTTP響應,同時

HTTP 響應包括了一個響應頭 Set-Cookie 字段,它的值是要設置的 Cookie。

2. 瀏覽?收到來自服務?的 HTTP 響應,響應頭中發現有 Set-Cookie 字段,就會將該字段的值保存在內存或者硬盤中。

3. 瀏覽?下次給該服務?發送 HTTP 請求時, 會將 Cookie 信息附加在 HTTP 請求的頭字段 Cookie 中。

4. 服務?收到這個HTTP請求,發現請求頭中有Cookie字段, 便知道之前就和這個用戶打過交道了。

理解了 Cookie 的基本原理之后,我們就可以嘗試用 Python 來實現模擬知乎登錄。

用過知乎的都知道,只要提供用戶名和密碼以及驗證碼之后即可登錄。當然,這只是我們眼中看到的,而背后隱藏的技術細節還需要借助瀏覽?來發覺。現在我們就用 Chrome 來查看當我們填完表單后,點擊登錄的時候究竟發生了什么?

首先進入知乎的登錄頁面 https://www.zhihu.com/#signin ,打開 Chrome 的開發者工具條(按 F12)先嘗試輸入一個錯誤的驗證碼觀察瀏覽?是如何發送請求的。

從瀏覽?的請求可以發現幾個關鍵的信息:

1. 登錄的 URL 地址是 https://www.zhihu.com/login/email

2. 登錄需要提供的表單數據有4個:用戶名(email)、密碼(password)、驗證碼(captcha)、_xsrf。

3. 獲取驗證碼的URL地址是 https://www.zhihu.com/captcha.gif?r=1490690391695&type=login

那么 _xsrf 參數是什么?如果你對CSRF(跨站請求偽造)攻擊非常熟悉的話,那么你一定知道它的作用,xsrf是一串偽隨機數,它是用于防止跨站請求偽造的。它一般存在網頁的 form 表單標簽中,為了證實這一點,可以在頁面上搜索 “xsrf”,果然,從下圖可以看到 _xsrf在一個隱藏的 input 標簽中 。

到這里,基本上摸清了瀏覽?登錄時所需要的數據是如何獲取的了,那么現在就可以開始擼代碼用 Python 模擬瀏覽?來登錄。登錄時所依賴的兩個第三方庫是 requests 和 BeautifulSoup,先安裝。

pip install beautifulsoup4==4.5.3

pip install requests==2.13.0

獲取 xsrf

前面已經找到了 xsrf 所在的標簽,,

利用 BeatifulSoup的find方法可以非常便捷的獲取該值,當然,如果你熟悉正則表達式,也可以不用 BeatifulSoup

defget_xsrf():response = session.get("https://www.zhihu.com", headers=headers)soup = BeautifulSoup(response.content, "html.parser")xsrf = soup.find('input', attrs={"name": "_xsrf"}).get("value")returnxsrf

獲取驗證碼

驗證碼是通過 /captcha.gif 接口返回的,這里我們把驗證碼圖片下載保存到當前目錄,由人工識別,當然你可以用第三方支持庫來自動識別,比如pytesser。

defget_captcha():"""把驗證碼圖片保存到當前目錄,手動識別驗證碼:return:"""t = str(int(time.time() * 1000))captcha_url = 'https://www.zhihu.com/captcha.gif?r='+ t + "&type=login"r = session.get(captcha_url, headers=headers)withopen('captcha.jpg', 'wb') asf:f.write(r.content)captcha = input("驗證碼:")returncaptcha

登錄

一切參數準備就緒之后,就可以請求登錄接口了。

deflogin(email, password):login_url = 'https://www.zhihu.com/login/email'data = {'email': email,'password': password,'_xsrf': get_xsrf(),"captcha": get_captcha(),'remember_me': 'true'}response = session.post(login_url, data=data, headers=headers)login_code = response.json()print(login_code['msg'])session.cookies.save()

最后運行返回的結果是“登錄成功”。表明登錄成功了。細心的你可能已經發現了,我調用了一個 cookies.save() 方法,我是把cookie信息保存到了本地,下次請求其他需要登錄的頁面時,就可以把 cookie信息攜帶上了。

session = requests.session()session.cookies = cookiejar.LWPCookieJar(filename='cookies')try:session.cookies.load(ignore_discard=True)except:print("還沒有cookie信息")

源碼:https://github.com/lzjun567/crawler_html2pdf/blob/master/zhihu/auto_login.py

CSDN Python學習班組織的【攢課】活動正在火熱進行中,歡迎Python愛好者報名參與:Python數據分析實戰,掃描報名!返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的python课设总结_Python技术分享课总结:用Python模拟知乎自动登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。