爬虫日记-人人网模拟登录

模拟登陆

既然我们做到了识别验证码,那么我们就可以开始模拟登录了。

from code import YDMHttp
import requests
from lxml import etree



def shibie(imagefile,codetype):#不用理会这个方法他的具体,只用知道他是识别验证码的
    username = 'chanyuli'

    # 密码
    password = 'qw171222338'

    # 软件ID,开发者分成必要参数。登录开发者后台【我的软件】获得!
    appid = 8956

    # 软件密钥,开发者分成必要参数。登录开发者后台【我的软件】获得!
    appkey = '3e05b8c8571c3cc219160a3f449501db'

    # 图片文件
    filename = imagefile

    # 验证码类型,# 例:1004表示4位字母数字,不同类型收费不同。请准确填写,否则影响识别率。在此查询所有类型 http://www.yundama.com/price.html
    codetype = codetype

    # 超时时间,秒
    timeout = 15

    # 检查
    if (username == 'username'):
        print('请设置好相关参数再测试')
    else:
        # 初始化
        yundama = YDMHttp(username, password, appid, appkey)

        # 登陆云打码
        uid = yundama.login();
        print('uid: %s' % uid)

        # 查询余额
        balance = yundama.balance();
        print('balance: %s' % balance)

        # 开始识别,图片路径,验证码类型ID,超时时间(秒),识别结果
        cid, result = yundama.decode(filename, codetype, timeout);
        print('cid: %s, result: %s' % (cid, result))


url='http://www.renren.com/SysHome.do'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3730.400 QQBrowser/10.5.3805.400'}

page_text=requests.get(url=url,headers=headers).text
tree=etree.HTML(page_text)
image_url=tree.xpath('//*[@id="verifyPic_login"]/@src')[0]
image_data=requests.get(url=image_url,headers=headers).content
with open('./img.jpg','wb')as fw:
    fw.write(image_data)
result=shibie('img.jpg',1006)
#在登录
data={#这个是关键的部分,把你的账号密码什么的填进去,这是从页面源代码的参数里获得的。
    'email': '18857221709',
    'icode': result,
    'origURL': 'http://www.renren.com/home',
    'domain':'renren.com',
    'key_id': '1',
    'captcha_type': 'web_login',
    'password': '1407ce10892be5fe40975b80ef78021c29515c1d4ade6cd08fe3e9de1823fed3',
    'rkey': 'c4c7ae1e97d7872d7ca29c01cff4eae5',
    'f': ''
}
#这个url是在你点击登录的时候找到的那个login?的那个请求。
login_url='http://www.renren.com/ajaxLogin/login?1=1&uniqueTimestamp=2019832253436'
page1_text=requests.post(url=login_url,headers=headers,data=data).text
with open('./renren.html','wt',encoding='utf8')as fw:
    fw.write(page1_text)

然后你就模拟登录上了。

posted @ 2019-09-22 17:27  chanyuli  阅读(188)  评论(0编辑  收藏  举报