公司有個內部的專案管理軟體,其中任務和bug模組需要從禪道發起,然後用爬蟲爬取禪道的任務和bug列表及詳細資訊,從而需要獲取禪道的登陸token
經過研究,發現禪道的登陸流程如下:
開啟登陸頁面的時候頁面產生乙個zentaosid的唯一標識,以及乙個verifyrand隨機值
對輸入的密碼進行md5加密
已經加密的密碼+verifyrand再一次md5加密
然後post請求登陸位址根據唯一的zentaosid驗密
知道了以上步驟不難寫出爬蟲**,以python為例
import hashlib
import requests
from lxml import html
loginurl =
'禪道的登陸位址'
password =
'密碼'
loginname =
'使用者名稱'
defgettoken()
: loginpage = requests.get(loginurl)
loginpage.encoding =
'utf-8'
sid = loginpage.cookies[
'zentaosid'
]print
('sid = '
+ sid)
logintree = html.fromstring(loginpage.text)
verifyrand = logintree.xpath(
'//*[@id="verifyrand"]'
)if verifyrand:
verifyrand = verifyrand[0]
.attrib[
'value'
]print
('verifyrand = '
+ verifyrand)
hl = hashlib.md5(
) hl.update(password.encode(encoding=
'utf-8'))
print
('md5 第一次加密結果 = '
+ hl.hexdigest())
passwordresult = hl.hexdigest(
)+ verifyrand
print
("passwordresult="
+ passwordresult)
hllast = hashlib.md5(
) hllast.update(passwordresult.encode(encoding=
'utf-8'))
print
('md5 第二次加密結果 = '
+ hllast.hexdigest())
loginbody =
logincookies =
dict
(zentaosid=sid, lang=
'zh-cn'
, keeplogin=
'on'
) loginresultpage = requests.post(loginurl, data=loginbody, cookies=logincookies)
print
('loginresultpage = '
+ loginresultpage.text)
token = loginresultpage.cookies[
'zp'
]print
('token = '
+ token)
return token
獲取token之後就可以愉快的爬取自己需要的資訊了 爬蟲 cookie模擬登陸
cookie 適用於抓取需要登入才能訪問的頁面 http協議為無連線協議,cookie 存放在客戶端瀏覽器,session 存放在web伺服器 1 先登入成功1次,獲取到攜帶登陸資訊的cookie 登入成功 個人主頁 f12抓包 重新整理個人主頁 找到主頁的包 home 一般cookie都在all ...
Python爬蟲模擬登陸豆瓣
coding utf 8 import requests,re from pil import image class doubanspider object def init self self.session requests.session def login self,username,pa...
python爬蟲登陸 帶Cookie token
用python寫爬蟲整的很方便,弄了個模擬登陸,登陸後帶上token和cooke請求頁面 就拿gitlab練下手了,這個還是有一丟丟麻煩的 一 登陸介面 獲取隱藏域中的token,構建表單的時候需要 獲取到這個 gitlab session,登陸校驗時需要帶著這個資訊 準備好token和cookie...