主頁 >  其他 > 433 什么錯誤 救救孩子 python

433 什么錯誤 救救孩子 python

2021-01-27 01:53:45 其他

Starting new HTTPS connection (1): wyydak.glitch.me:443

https://wyydak.glitch.me:443 "GET /?do=check HTTP/1.1" 200 None

api測驗正常

[點擊并拖拽以移動]

這是程式的代碼

#coding:utf-8
'''
@author: ZainCheung
@LastEditors: ZainCheung
@description:網易云音樂全自動每日打卡云函式版
@Date: 2020-06-25 14:28:48
@LastEditTime: 2020-09-01 18:20:00
'''
from configparser import ConfigParser
from threading import Timer
import requests 
import random
import hashlib
import datetime
import time
import json
import logging
import math

logger = logging.getLogger()
grade = [10,40,70,130,200,400,1000,3000,8000,20000]
api = ''

class Task(object):
    
    '''
    物件的建構式
    '''
    def __init__(self, uin, pwd, sckey, countrycode=86):
        self.uin = uin
        self.pwd = pwd
        self.countrycode = countrycode
        self.sckey = sckey

    '''
    帶上用戶的cookie去發送資料
    url:完整的URL路徑
    postJson:要以post方式發送的資料
    回傳response
    '''
    def getResponse(self, url, postJson):
        response = requests.post(url, data=https://bbs.csdn.net/topics/postJson, headers={'Content-Type':'application/x-www-form-urlencoded'},cookies=self.cookies)
        return response

    '''
    登錄
    '''
    def login(self):
        data = {"uin":self.uin,"pwd":self.pwd,"countrycode":self.countrycode,"r":random.random()}
        if '@' in self.uin:
            url = api + '?do=email'
        else:
            url = api + '?do=login'
        response = requests.post(url, data=https://bbs.csdn.net/topics/data, headers={'Content-Type':'application/x-www-form-urlencoded'})
        code = json.loads(response.text)['code']
        self.name = json.loads(response.text)['profile']['nickname']
        self.uid = json.loads(response.text)['account']['id']
        if code==200:
            self.error = ''
        else:
            self.error = '登錄失敗,請檢查賬號'
        self.cookies = response.cookies.get_dict()
        self.log('登錄成功')

    '''
    每日簽到
    '''
    def sign(self):
        url = api + '?do=sign'
        response = self.getResponse(url, {"r":random.random()})
        data = json.loads(response.text)
        if data['code'] == 200:
            self.log('簽到成功')
        else:
            self.log('重復簽到')

    '''
    每日打卡300首歌
    '''
    def daka(self):
        url = api + '?do=daka'
        response = self.getResponse(url, {"r":random.random()})
        self.log(response.text)

    '''
    查詢用戶詳情
    '''
    def detail(self):
        url = api + '?do=detail'
        data = {"uid":self.uid, "r":random.random()}
        response = self.getResponse(url, data)
        data = json.loads(response.text)
        self.level = data['level']
        self.listenSongs = data['listenSongs']
        self.log('獲取用戶詳情成功')

    '''
    Server推送
    '''
    def server(self):
        if self.sckey == '':
            return
        url = 'https://sc.ftqq.com/' + self.sckey + '.send'
        self.diyText() # 構造發送內容
        response = requests.get(url,params={"text":self.title, "desp":self.content})
        data = json.loads(response.text)
        if data['errno'] == 0:
            self.log('用戶:' + self.name + '  Server醬推送成功')
        else:
            self.log('用戶:' + self.name + '  Server醬推送失敗,請檢查sckey是否正確')

    '''
    自定義要推送到微信的內容
    title:訊息的標題
    content:訊息的內容,支持MarkDown格式
    '''
    def diyText(self):
        # today = datetime.date.today()
        # kaoyan_day = datetime.date(2020,12,21) #2021考研黨的末日
        # date = (kaoyan_day - today).days
        for count in grade:
            if self.level < 10:
                if self.listenSongs < 20000:
                    if self.listenSongs < count:
                        self.tip = '還需聽歌' + str(count-self.listenSongs) + '首即可升級'
                        break
                else:
                    self.tip = '你已經聽夠20000首歌曲,如果登錄天數達到800天即可滿級'
            else:
                self.tip = '恭喜你已經滿級!'
        if self.error == '':
            state = ("- 目前已完成簽到\n"
                    "- 今日共打卡" + str(self.dakanum) + "次\n"
                    "- 今日共播放" + str(self.dakaSongs) + "首歌\n"
                    "- 還需要打卡" + str(self.day) +"天")
            self.title = ("網易云今日打卡" + str(self.dakaSongs) + "首,已播放" + str(self.listenSongs) + "首")
        else:
            state = self.error
            self.title = '網易云聽歌任務出現問題!'
        self.content = (
            "------\n"
            "#### 賬戶資訊\n"
            "- 用戶名稱:" + str(self.name) + "\n"
            "- 當前等級:" + str(self.level) + "級\n"
            "- 累計播放:" + str(self.listenSongs) + "首\n"
            "- 升級提示:" + self.tip + "\n\n"
            "------\n"
            "#### 任務狀態\n" + str(state) + "\n\n"
            "------\n"
            "#### 打卡日志\n" + self.dakaSongs_list + "\n\n")

    '''
    列印日志
    '''
    def log(self, text):
        time_stamp = datetime.datetime.now()
        print(time_stamp.strftime('%Y.%m.%d-%H:%M:%S') + '   ' + str(text))
        self.time =time_stamp.strftime('%H:%M:%S')
        self.list.append("- [" + self.time + "]  " + str(text) + "\n\n")

    '''
    開始執行
    '''
    def start(self):
        try:
            self.list = []
            self.list.append("- 初始化完成\n\n")
            self.login()
            self.sign()
            self.detail()
            counter  = self.listenSongs
            for i in range(1,10):
                self.daka()
                #self.log('用戶:' + self.name + '  第' + str(i) + '次打卡成功,即將休眠10秒')
                self.log('第' + str(i) + '次打卡成功,即將休眠10秒')
                time.sleep(10)
                self.dakanum = i
                self.detail()
                self.dakaSongs = self.listenSongs - counter
                self.log('今日已打卡播放' + str(self.dakaSongs) + '首')
                if self.dakaSongs == 300:
                    break
            if self.listenSongs >= 20000:
                self.day = 0
            else:
                self.day = math.ceil((20000 - self.listenSongs)/300)
            self.list.append("- 打卡結束,訊息推送\n\n")
            self.dakaSongs_list = ''.join(self.list)
            self.server()
        except:
            self.log('用戶任務執行中斷,請檢查賬號密碼是否正確')
        else:
            self.log('用戶:' + self.name + '  今日任務已完成')
        
        
'''
初始化:讀取配置,組態檔為init.config
回傳字典型別的配置物件
'''
def init():
    global api # 初始化時設定api
    config = ConfigParser()
    config.read('init.config', encoding='UTF-8-sig')
    uin = config['token']['account']
    pwd = config['token']['password']
    countrycode = config['token']['countrycode']
    api = config['setting']['api']
    md5Switch = config.getboolean('setting','md5Switch')
    peopleSwitch = config.getboolean('setting','peopleSwitch')
    sckey = config['setting']['sckey']
    logger.info('組態檔讀取完畢')
    conf = {
            'uin': uin,
            'pwd': pwd,
            'countrycode': countrycode,
            'api': api,
            'md5Switch': md5Switch, 
            'peopleSwitch':peopleSwitch,
            'sckey':sckey
        }
    return conf

'''
MD5加密
str:待加密字符
回傳加密后的字符
'''
def md5(str):
    hl = hashlib.md5()
    hl.update(str.encode(encoding='utf-8'))
    return hl.hexdigest()

'''
加載Json檔案
jsonPath:json檔案的名字,例如account.json
'''
def loadJson(jsonPath):
    with open(jsonPath,encoding='utf-8') as f:
        account = json.load(f)
    return account

'''
檢查api
'''
def check():
    url = api + '?do=check'
    respones = requests.get(url)
    if respones.status_code == 200:
        logger.info('api測驗正常')
    else:
        logger.error('api測驗例外')

'''
任務池
'''
def taskPool():
    
    config = init()
    check() # 每天對api做一次檢查
    if config['peopleSwitch'] is True:
        logger.info('多人開關已打開,即將執行進行多人任務')
        account = loadJson("account.json")
        for man in account:
            logger.info('賬號: ' + man['account'] + '  開始執行\n========================================')
            task = Task(man['account'], man['password'], man['sckey'])
            task.start()
            time.sleep(10)
        logger.info('所有賬號已全部完成任務,服務進入休眠中,等待明天重新啟動')
    else :
        logger.info('賬號: ' + config['uin'] + '  開始執行\n========================================')
        if config['md5Switch'] is True:
            logger.info('MD5開關已打開,即將開始為你加密,密碼不會上傳至服務器,請知悉')
            config['pwd'] = md5(config['pwd'])
        task = Task(config['uin'], config['pwd'], config['sckey'], config['countrycode'])
        task.start()

'''
程式的入口
'''
def main(event,content):
    taskPool()

[點擊并拖拽以移動]


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/252805.html

標籤:腳本語言(Perl/Python)

上一篇:如何讓熟悉標簽變成最右側一列資料

下一篇:泥丸免費VOIP電話下載

標籤雲
其他(123570) Java(13369) Python(12731) C(7542) 區塊鏈(7372) JavaScript(7059) 基礎類(6313) AI(6244) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4120) MySQL(4012) Linux(3394) C語言(3288) C++語言(3117) Java相關(2746) 疑難問題(2699) 單片機工控(2479) Web開發(1951) 網絡通信(1793) 數據庫相關(1767) VB基礎類(1755) PHP(1727) 開發(1646) 系統維護與使用區(1617) .NETCore(1586) 基礎和管理(1579) JavaEE(1566) C++(1527) 專題技術討論區(1515) Windows客戶端使用(1484) HtmlCss(1466) ASP.NET(1428) Unity3D(1354) VCL組件開發及應用(1353) HTML(CSS)(1220) 其他技術討論專區(1200) WindowsServer(1192) .NET技术(1165) 交換及路由技術(1149) 語言基礎算法系統設計(1133) WindowsSDKAPI(1124) 界面(1088) JavaSE(1075) Qt(1074) VBA(1048) 新手樂園(1016) 其他開發語言(947) Go(907) HTML5(901) 新技術前沿(898) 硬件設計(872) 區塊鏈技術(860) 網絡編程(857) 非技術版(846) 一般軟件使用(839) 網絡協議與配置(835) Eclipse(790) Spark(750) 下載資源懸賞專區(743)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • Scala將案例類串列轉換為另一個案例類串列

    case class student1(name :String, marks :Long) case class student2(studentName:String, marks:Long) val mylist:List[student1] = List( student1("a",100) , student...

    uj5u.com 2021-10-16 16:17:44 more
  • 具有不同泛型型別的Scala3擴展多載

    我正在從 Scala 2.13 遷移到 Scala 3,并且正在嘗試重寫小型實用程式函式。在 2.13 中,可以撰寫一個更通用的隱式和另一個更具體的,但在 Scala 3 中似乎不再可能。 type Outcom...

    uj5u.com 2021-10-16 16:16:46 more
  • CatsScala中的序列和遍歷以映射型別

    我有一個型別的值,List[EitherT[IO, String, Int]]我想對其進行序列處理以將其映射到EitherT[IO,String, List[Int]]我閱讀并找到了序列方法,但它給了我一個錯誤,說它需要 [G]...

    uj5u.com 2021-10-16 16:14:44 more
  • 為什么集合上的`contains`不需要正確的型別?

    這是怎么編譯的:scala> val x: Vector[Int] = Vector(1,2,3)val x: Vector[Int] = Vector(1, 2, 3)scala> x.contains("hello")val res4: Boolean = falsescala> x.contains(...

    uj5u.com 2021-10-16 16:14:15 more
  • 在Scala中將兩個不同的RDD與不同的鍵組合在一起

    我有兩個文本檔案已經由 sparkcontext 創建為 rdd。其中一個(rdd1)保存相關詞:apple,applescar,carscomputer,computers另一個(rdd2)保存專案數:(apple,12)(apples, 50)(car,5)(ca...

    uj5u.com 2021-10-16 16:13:46 more
  • 將錯誤從catch塊記錄到Cosmosdb-spark

    目標:- 使用“get”api 呼叫從 S3 存盤桶中檢索物件,將檢索到的物件寫入 azure 資料湖,并在出現 404s(未找到物件)等錯誤時將錯誤訊息寫入 Cosmos DB“my_dataframe”由一列 (s3O...

    uj5u.com 2021-10-16 16:13:14 more
  • 如何處理用于理解和錯誤恢復的錯誤場景

    目前我的錯誤處理沒有按照我的意愿作業,這就是我想要做的:UserApi.insert 失敗,回傳錯誤,不要繼續WorkApi.insert 失敗,呼叫 UserApi.delete 后回傳錯誤WorkApi.assign 失敗,呼叫...

    uj5u.com 2021-10-16 16:12:45 more
  • 如何發送多條訊息作為我的來源

    我只是在嘗試這個當前有一個 TextMessage 作為源的示例流: // print each incoming strict text message val printSink: Sink[Message, Future[Done]] = Sink.forea...

    uj5u.com 2021-10-16 16:12:12 more
  • 如何在寫入時強制資料集匹配其架構?

    經過一些轉換后,我想使用 insertInto 將 spark 資料集保存到鑲木地板表中。ds.write.mode(SaveMode.Overwrite).insertInto(tablename) 但是操作失敗,給我這個錯誤:[TABLENAME]...

    uj5u.com 2021-10-16 16:11:31 more
  • 用于理解的模式匹配分配如何轉化為一元操作?

    我熟悉的概念,即Scala的for內涵是對一元的操作只是語法糖(map,withFilter,foreach和flatMap)和脫糖中描述這個流行的答案。通過這種邏輯,我驚訝地發現,當使用模式匹配作為推導式的...

    uj5u.com 2021-10-16 16:10:58 more