python3 破解 spdex 登陆 爬取 spdex

Python3   2023-03-14 15:58   810   0  

破解spdex登陆

import io
import time
import requests
import pytesseract
from lxml import etree
from PIL import Image


def login():
    sess = requests.session()   # 新建session
    username = '13866669999'    # 用户名
    password = 'qqqqqqqq'       # 密码
    header = {                  # header 头信息
        "host": "op1.sp1x2.net",
        "origin": "https://op1.sp1x2.net",
        "referer": "https://op1.sp1x2.net/Login.aspx?FromUrl=http%3a%2f%2fop1.sp1x2.net%2fdv_1_0_0_0_0_0",
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
    }
    index_url = "https://op1.sp1x2.net/Login.aspx?FromUrl=http%3a%2f%2fop1.sp1x2.net%2fdv_1_0_0_0_0_0"      # 登陆首页
    index_resp = sess.get(url=index_url,headers=header)
    login_info = []                                                                 # 获取登陆必要信息
    for i in etree.HTML(index_resp.text).xpath('//div[@class="aspNetHidden"]'):
        for ii in i.xpath('input/@value'):
            login_info.append(ii)
    yzm_url = "https://op1.sp1x2.net/ValidateCodePage.aspx"                         # 验证码URL
    yzm_resp = sess.get(url=yzm_url,headers=header)
    # yzm = open(r'./yzm.gif','wb')
    # yzm.write(yzm_resp.content)
    # yzm.close()
    image = Image.open(io.BytesIO(yzm_resp.content)).convert('L')                   # 将图片转化成灰度图像,再转化成二值化图像
    threshold = 96  # 设定阈值
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    image = image.point(table,'1')
    # image.show()                                                                  # 打开图片
    yzm = str(pytesseract.image_to_string(image,lang='eng',config = "--psm 7")).strip("\n")                 # 得到验证码
    data = {                                                                                                # 登录form信息
        '__EVENTTARGET': login_info[0], 
        '__EVENTARGUMENT': login_info[1], 
        '__VIEWSTATE': login_info[2], 
        '__VIEWSTATEGENERATOR': login_info[3], 
        'ctl00$ContentPlaceHolder1$TxtUserName': username, 
        'ctl00$ContentPlaceHolder1$TxtPassWord': password, 
        'ctl00$ContentPlaceHolder1$TxtValida': yzm, 
        'ctl00$ContentPlaceHolder1$BtnSubmit': '登 录'
    }
    login_url = "https://op1.sp1x2.net/Login.aspx?FromUrl=http%3a%2f%2fop1.sp1x2.net%2fdv_1_0_0_0_0_0"      # 登陆URL
    login_resp = sess.post(url=login_url,headers=header,data=data).text
    # with open('/Users/tian/demo/test/test.html',mode="w") as f:
    #     f.write(login_resp)
    cookies = requests.utils.dict_from_cookiejar(index_resp.cookies)                                        # 当前cookie
    print(yzm)
    if "验证码有误" in login_resp:
        print("验证码有误,正在重新登陆.")
        time.sleep(3)
        return(login())
    elif username in login_resp:
        print(cookies)
        return(sess)
    else:
        print("未知错误.")
        return(None)

new_session = login()
print(new_session)
博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。