美文网首页
最基本的验证码练习-手动输入douban

最基本的验证码练习-手动输入douban

作者: 任我笑笑 | 来源:发表于2018-05-27 10:47 被阅读0次

    作为昨天的验证码练习,手动输入
    模仿的是douban

    前期准备

    image.png

    douban在登录的时候,如果一次成功,则没有什么关系
    如果失败,或者多次请求,会出现验证码

    image.png

    form的url
    form的结构

    <input id="email" name="form_email" type="text" class="basic-input" maxlength="60" value="xxxxxxxx" tabindex="1">
    
    <input id="password" name="form_password" type="password" class="basic-input" maxlength="20" tabindex="2">
    
    <input type="text" id="captcha_field" name="captcha-solution" tabindex="3" placeholder="验证码">
    

    此外,有2个hidden,意思不明,如果只是3个而不能post请求成功的话,会加入下面这2个

    <input name="source" type="hidden" value="index_nav">
    <input name="redir" type="hidden" value="https://www.douban.com/">
    
    image.png

    验证码的url

    至此,前期调查完成

    代码

    新建项目

    新建项目的时候选择anacoda的环境,否则不认


    image.png

    如果没有这个选项,可以先在file ->default settings中添加

    image.png

    最终代码

    import requests
    from lxml import etree
    
    url = "https://accounts.douban.com/login"
    header ={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36"}
    import user
    data = {
        "form_email":user.email,
        "form_password":user.password
    }
    r = requests.post(url = url,headers = header, data=data)
    captcha = etree.HTML(r.text).xpath("//img[@id='captcha_image']/@src")
    # 开始没有加这一项,结果失败,推测跟图片的验证码是一一对应的关系,图片是问题,这个是答案
    captchaId  = etree.HTML(r.text).xpath("//input[@name='captcha-id']/@value")
    if (len(captcha) > 0 ):
        print(captcha[0])
        with open("1.jpg","wb") as fn :
            fn.write(requests.get(captcha[0]).content)
        captchaCode = input(">>>>")
        # 添加验证码后再次发起请求
        data["captcha-solution"] = captchaCode
        data["captcha-id"]=captchaId
        print(data)
        r = requests.post(url=url, headers=header, data=data)
        print(r.text)
    else:
        print(r.text)
    
    

    scrapy的参考
    https://www.jianshu.com/p/1567d45b5588

    相关文章

      网友评论

          本文标题:最基本的验证码练习-手动输入douban

          本文链接:https://www.haomeiwen.com/subject/rpzvjftx.html