用爬虫登陆禅道最新版

python 同时被 2 个专栏收录
1 篇文章 0 订阅
1 篇文章 0 订阅

公司有个内部的项目管理软件,其中任务和bug模块需要从禅道发起,然后用爬虫爬取禅道的任务和bug列表及详细信息,从而需要获取禅道的登陆token
经过研究,发现禅道的登陆流程如下:

  1. 打开登陆页面的时候页面产生一个zentaosid的唯一标识,以及一个verifyRand随机值
  2. 对输入的密码进行md5加密
  3. 已经加密的密码+verifyRand再一次md5加密
  4. 然后post请求登陆地址根据唯一的zentaosid验密

知道了以上步骤不难写出爬虫代码,以python为例

import hashlib

import requests
from lxml import html

loginUrl = '禅道的登陆地址'
password = '密码'
loginName = '用户名'

def getToken():
    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 = {"account": loginName, "password": hlLast.hexdigest(), "keepLogin[]": "on"}
    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之后就可以愉快的爬取自己需要的信息了

  • 1
    点赞
  • 3
    评论
  • 3
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值