利用云打码来破解登录遇到验证码的问题

云打码地址:

爬取的目标网站,是一个古诗文网站
https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx
云达码是一款打码平台,
云达码使用流程

  • 注册:普通和开发者用户
  • 登录
    1 . 普通用户登录:查询该用户是否还有剩余的提分
    2 .开发者用户的登录:
    - 创建一个软件,:我的文档–》添加先软件–》录入软件名称–》提交(appid和appkey)
    - 下载示例代码,:开发文档–》点击下载:云打码接口DLL–》PythonHTTP示例下载
    代码块中自定义函数login里面的emailpwd是登录的账号和密码,这个可以登录自己的用户账号,来进行爬取,注意::每爬取一次就会扣除一定的提分,扣除多少 都有一定的规定 :http://www.yundama.com/price.html这是提分价格表的链接,可以去了解下!

对了!还有一点就是再登录的时候一定要创建会话,否则代码写的再No Problem**!都是🚗单,一定要携带 cookie去访问,

# -*- coding = utf-8 -*-
#@time :2020/5/18 13:39
#Author :Song
#@file 古诗文网验证码识别.py
#@Software: PyCharm


#下载验证码图片到本地

import requests
from fake_useragent import UserAgent
from lxml import etree
from webspider.day18.verification_code import get_code

def indexHTML(s):
    url ="https://so.gushiwen.org/user/login.aspx?from="
    r =s.get(url=url,headers={"User-Agent":UserAgent().chrome})
    return r.text

def download_image(html,s):
    tree = etree.HTML(html)
    #获取验证码图片
    image_src =tree.xpath('//*[@id="imgCode"]/@src')[0]
    #拼接完整的image url
    image_url ="https://so.gushiwen.org" + image_src
    r =s.get(url=image_url,headers={"User-Agent":UserAgent().random})
    with open("yzm.png","wb")as fp:
        fp.write(r.content)
    code =get_code("yzm.png",1004)
    print(code)
    # print(code)
    #指令解析
    viewstate = __VIEWSTATE = tree.xpath('//*[@id="aspnetForm"]/div[1]/input/@value')[0]
    viewstategenerator = __VIEWSTATEGENERATOR =tree.xpath('//*[@id="aspnetForm"]/div[2]/input/@value')[0]
    # print(viewstategenerator)
    # print(viewstate)
    return code,viewstate,viewstategenerator


def login(code,viewstate,viewstategenerator,s):
    post_url="https://so.gushiwen.org/user/login.aspx?from="
    formdata={
    "__VIEWSTATE":viewstate,
    "__VIEWSTATEGENERATOR":viewstategenerator,
    "from":"",
    "email":"**********",
    "pwd":"**********",
    "wasd":"",
    "code":code,
    "denglu":"登录",
    }
    r =s.post(url=post_url,headers={"User-Agent":UserAgent().chrome},data=formdata)
    # print(r.text)
    with open("gs.html","w",encoding="utf8")as fp:
        fp.write(r.text)
def main():
    #创建会话,来进行登录
    s =requests.Session()
    #古诗文网页没登陆之前的页面,获取页面信息,来下载验证码图片
    html = indexHTML(s)
    #下载验证码,
    code,viewstate,viewstategenerator = download_image(html,s)
    #登录
    login(code,viewstate,viewstategenerator,s)

if __name__ == '__main__':
    main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过期的秋刀鱼-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值