xiangm2 2017-03-10 09:22 采纳率: 0%
浏览 2269

python requests模拟登录B站验证码问题

求问如何保证我获取的验证码和和执行模拟登录的验证码是一致的啊
附上代码

-*- coding : cp936 -*-

import time
import datetime
import requests
import traceback
from PIL import Image

First get the picList

session = requests.Session()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection': 'keep-alive',
'Host':'passport.bilibili.com','Referer': 'https://passport.bilibili.com/login',
'Accept':'*/*','Accept-Encoding':'gzip, deflate, br'}

def getPicCode():
picurl = 'http://passport.bilibili.com/captcha'
try:
payload = {'t':''}
pictext = session.get(url = picurl,headers = headers)
print pictext.status_code
#print pictext.request.headers
with open('codepic.jpg','wb') as result:
result.write(pictext.content)
except Exception, diag:
print str(diag)

def LoginBili(userid,password,vdcode):
getPicCode()
image = Image.open("codepic.jpg")
image.show()
vdcode = raw_input('Please input the code in the Pic:')
loginurl = 'https://passport.bilibili.com/login/dologin'
data = {'act':'login','gourl':'http://www.bilibili.com/','keeptime':'2592000',
'pwd':password,'userid':userid,'vdcode':vdcode}
print data
r = session.post(url = loginurl,headers = headers,data = data)
print r.status_code
print r.text

if name == '__main__':
password = '**************'
userid,vdcode = '**********','0'
LoginBili(userid, password, vdcode)

每次需要手动输入自己获取的验证码,但是不知道为什么,每次显示输入的验证码都是错误的,应该是两次访问页面,这个验证码变化了,不知道要怎么调整

  • 写回答

1条回答 默认 最新

  • xiangm2 2017-03-10 09:28
    关注

    附上代码

    -*- coding : cp936 -*-

    import time
    import datetime
    import requests
    import traceback
    from PIL import Image

    First get the picList

    session = requests.Session()
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0',
    'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection': 'keep-alive',
    'Host':'passport.bilibili.com','Referer': 'https://passport.bilibili.com/login',
    'Accept':'*/*','Accept-Encoding':'gzip, deflate, br'}

    def getPicCode():
    picurl = 'http://passport.bilibili.com/captcha'
    try:
    payload = {'t':''}
    pictext = session.get(url = picurl,headers = headers)
    print pictext.status_code
    #print pictext.request.headers
    with open('codepic.jpg','wb') as result:
    result.write(pictext.content)
    except Exception, diag:
    print str(diag)

    def LoginBili(userid,password,vdcode):
    getPicCode()
    image = Image.open("codepic.jpg")
    image.show()
    vdcode = raw_input('Please input the code in the Pic:')
    loginurl = 'https://passport.bilibili.com/login/dologin'
    data = {'act':'login','gourl':'http://www.bilibili.com/','keeptime':'2592000',
    'pwd':password,'userid':userid,'vdcode':vdcode}
    print data
    r = session.post(url = loginurl,headers = headers,data = data)
    print r.status_code
    print r.text

        if __name__ == '__main__':
    password ='***************'
    userid,vdcode = '**********','0'
    LoginBili(userid, password, vdcode)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题