京东618热爱狂欢趴 一键完成任务脚本来袭(更新)

  • 作者:admin
  • 分类:活动
  • 发布时间:2021.05.28 18:55
  • 阅读:17415

    京东618热爱狂欢趴 一键完成任务脚本来袭(更新)


    2021-06-15更新:

    1、修复火爆

    闪退的需要安装下crypto-js (在放下载的软件的文件夹里打开cmd,比如你软件放在D:\jd文件夹下,就cmd到这个文件夹下安装 

    直接输入:

    npm install crypto-js


    脚本会迟到,但不会缺席~ hhh

    脚本介绍

    京东618热爱狂欢趴一键做任务,让大家不用每日进行重复且浪费时间的操作.


    活动地址:https://wbbny.m.jd.com/babelDiy/Zeus/2s7hhSTbhMgxpGoa9JDnbDzJTaBB/index.html#/home

    活动好几天了,忙着一直没去整,也看到了很多网上已经做好的软件,不少网友反馈怕偷cookie,不过确实,防人之心不可无

    话不多少直接奔重点吧,跟以前一样python脚本,同时也会生成一个exe供不会python的人用

    更新内容

    2021-06-15更新:

    1、修复火爆


    2021-06-12通知:

    闪退的需要安装下crypto-js (在放下载的软件的文件夹里打开cmd,比如你软件放在D:\jd文件夹下,就cmd到这个文件夹下安装 

    直接输入:

    npm install crypto-js



    2021-06-10通知:

    估计这个js每天都要更新了,多关注云盘或者git,更新了会直接上传不在这通知了


    2021-06-08更新:

    1、更新加密js,修复火爆,下载最新js替换06-06的js即可


    2021-06-06更新:

    1、增加图鉴任务和抽奖

    2、增加微信小程序任务

    3、修复了一些bug


    2021-06-03更新:

    1、修复大部分火爆,增加加密js代码调用,务必下载jiami.js与py文件放一起,exe的话也需要
    2、python的话安装PyExecJS库
    3、打包exe

    4、***************需要安装node.js**************** 官网:https://nodejs.org/en/

    win7安装不了,下载低版本:https://nodejs.org/dist/latest-v13.x/

    安装时选下添加环境变量

    2021-06-02更新:

    1、修复火爆问题,应该大部分号不火爆了

    2、删除星推官活动

    3、打包生成cookie exe软件


    2021-05-31更新

    新增:
        1、添加扫码获取Cookie脚本,打开后使用京东app扫二维码,会生成对应的ck.txt文件
        2、新增京东星推官活动


    GitHub开源地址https://github.com/xoyi/jd_wbbny


    软件下载地址

    https://meituan.lanzoui.com/b0f8iaueb   密码:  ct2k



    脚本使用方法:


    1、python脚本,依赖requests库,需要自己抓取cookie,保存在ck.txt文件中

    2、参数设置

        task_times     #循环任务次数,可以多跑几次没事
        sleep_times  #间隔时间,默认在任务所需的基础上加,一般设置2s左右就成,看自己

    3、脚本可以完成签到,逛店,加购等任务

    4、将py文件或者exe文件跟ck.txt放一起运行,没ck.txt的自己创建个,多账号的话换行放cookie即可

    5、python打包出的exe都比较大,介意的直接用文件或者看源码


    截图:

    试了几个号暂时看着没啥问题,运行截图


    源码:

    import urllib
    import requests
    import time
    import json
    import random
    import re
    import sys
    from urllib import parse
    import urllib3
    urllib3.disable_warnings()
    
    #活动地址
    #https://wbbny.m.jd.com/babelDiy/Zeus/2s7hhSTbhMgxpGoa9JDnbDzJTaBB/index.html#/home
    
    #欢迎使用jd脚本,有问题可以咨询作者QQ:1811881314
    
    #循环任务次数,可以多跑几次没事
    task_times = 3
    #间隔时间,默认在任务所需的基础上加,一般设置2s左右就成,看自己
    sleep_times = 2
    
    Cookies = []
    try:
        with open('ck.txt','r', encoding='utf-8') as ef:
            for i in ef:
                i = i.strip('\r\n')
                Cookies.append(i)
    except:
        print('看看有ck.txt文件没,看看放cookie没')
        input('按任意键退出')
        sys.exit()
    
    #初始化
    def get_secretp(headers):
        url = 'https://api.m.jd.com/client.action?functionId=zoo_getHomeData'
        data = 'functionId=zoo_getHomeData&body={}&client=wh5&clientVersion=1.0.0'
        res = requests.post(url,data=data,headers=headers,verify=False,timeout=5).json()
        if res.get('data').get('bizCode') == 0:
            return res.get('data').get('result').get('homeMainInfo').get('secretp')
        else:
            print('初始化失败')
            return None
    #获取任务列表
    def task_list(headers):
        url = "https://api.m.jd.com/client.action?functionId=zoo_getTaskDetail"
        data = 'functionId=zoo_getTaskDetail&body={}&client=wh5&clientVersion=1.0.0'
        try:
            res = requests.post(url,headers=headers,data=data,verify=False).json()
            if res.get('code') == 0:
                datas = res.get('data').get('result').get('taskVos')
                lists = []
                for i in datas:
                    taskId = i.get('taskId')
                    status = i.get('status')
                    taskTitle = i.get('taskName')
                    if status == 1 and taskId != 2 and taskId != 14 and taskId != 16 and taskId != 17:
                        s = (taskId,taskTitle)
                        lists.append(s)
                    if status == 3:
                        print(taskTitle + '任务已完成')
                return lists
            else:
                print(res.get('msg'))
        except:
            print('其他')
    
    def get_taskVos(taskId,headers):
        url = 'https://api.m.jd.com/client.action?functionId=zoo_getTaskDetail'
        data = 'functionId=zoo_getTaskDetail&body={"taskId":%s}&client=wh5&clientVersion=1.0.0' % taskId
        try:
            res = requests.post(url,headers=headers,data=data,verify=False).json()
            if res.get('code') == 0:
                taskVos = res.get('data').get('result').get('taskVos')[0]
                return taskVos
            else:
                print(res.get('msg'))
        except:
            print('其他')
    #签到
    def sign(headers):
        url = 'https://api.m.jd.com/client.action?functionId=zoo_sign'
        data = 'functionId=zoo_sign&body={}&client=wh5&clientVersion=1.0.0'
        try:
            res = requests.post(url,headers=headers,data=data,verify=False).json()
            if res.get('code') == 0:
                if res.get('data').get('bizCode') == 0:
                    redPacketValue = res.get('data').get('result').get('redPacketValue')
                    print('签到成功,获得%s元红包' % redPacketValue)
                else:
                    print(res.get('data').get('bizMsg'))
            else:
                print(res.get('msg'))
        except:
            print('其他')
    
    #逛店
    def guangdian(taskId,taskToken,itemId,buttonid,headers):
        randomnum = random.randint(1000000,9999999)
        secretp = get_secretp(headers)
        url = 'https://api.m.jd.com/client.action?functionId=zoo_collectScore'
        body = {
            "taskId":taskId,
            "actionType":1,
            "taskToken":taskToken,
            "ss":"{\"extraData\":{\"log\":\"-1\",\"sceneid\":\"QD216hPageh5\"},\"secretp\":\"%s\",\"random\":\"%s\"}" % (secretp,randomnum),
            }
        bodys = json.dumps(body)
        data = 'functionId=zoo_collectScore&body=%s&client=wh5&clientVersion=1.0.0' % bodys
        try:
            res = requests.post(url,headers=headers,data=data,verify=False,timeout=5).json()
            if res.get('data').get('bizCode') == 0:
                print('进店成功')
                return res
            else:
                print(res.get('data').get('bizMsg'))
        except:
            print('其他')
    
    #领取
    def lingqu(taskToken,headers):
        url = 'https://api.m.jd.com/client.action?client=wh5&clientVersion=1.0.0&functionId=qryViewkitCallbackResult&body='
        body = {
            'dataSource': "newshortAward",
            'method': "getTaskAward",
            'reqParams': "{\"taskToken\":\"%s\"}" % taskToken,
            'sdkVersion': "1.0.0",
            'clientLanguage': "zh"
        }
        bodys = json.dumps(body)
        uri = url + bodys
        try:
            response = requests.get(uri,headers=headers,verify=False,timeout=5).json()
            if response.get('code') == '0':
                print(response.get('toast').get('subTitle'))
            else:
                print('其他')
        except:
            print('其他')
    def getFeedDetail(taskId,headers):
        url = 'https://api.m.jd.com/client.action?functionId=zoo_getFeedDetail'
        data = 'functionId=zoo_getFeedDetail&body={"taskId":"%s"}&client=wh5&clientVersion=1.0.0' % taskId
        try:
            res = requests.post(url,headers=headers,data=data,verify=False,timeout=5).json()
            productInfoVos = res.get('data').get('result').get('addProductVos')[0].get('productInfoVos')
            # print(productInfoVos)
            return productInfoVos
        except:
            print('其他')
    # getFeedDetail()
    #任务列表内容
    def renwu(headers):
        lists = task_list(headers)
        for list1 in lists:
            taskId,taskTitle = list1
            print(taskId,taskTitle)
            taskVos = get_taskVos(taskId,headers)
            if taskId == 1 or taskId ==4 or taskId == 5 or taskId == 6 or taskId == 8 or taskId == 3:
                print('>>>>>开始进行%s任务' % taskTitle)
                buttonid = 'jmdd-react-smash_73'
                waitDuration=taskVos.get('waitDuration')
                shoppingActivityVos = taskVos.get('shoppingActivityVos')
                for shop in shoppingActivityVos:
                    shopstatus = shop.get('status')
                    taskToken = shop.get('taskToken')
                    shoptitle = shop.get('title')
                    itemId = shop.get('itemId')
                    if shopstatus == 1:
                        print('任务“%s”' % shoptitle)
                        guangdian(taskId,taskToken,itemId,buttonid,headers)
                        print('等待%s秒' %  (waitDuration + sleep_times))
                        time.sleep(int(waitDuration + sleep_times))
                        lingqu(taskToken,headers)
            if taskId == 9:
                print('>>>>>开始进行%s任务' % taskTitle)
                waitDuration=taskVos.get('waitDuration')
                buttonid = 'jmdd-react-smash_73'
                browseShopVos = taskVos.get('browseShopVo')
                for browseShop in browseShopVos:
                    browsestatus = browseShop.get('status')
                    browsetaskToken = browseShop.get('taskToken')
                    shopName = browseShop.get('shopName')
                    shopId = browseShop.get('shopId')
                    if browsestatus == 1:
                        print('任务“%s”' % shopName)
                        guangdian(taskId,browsetaskToken,shopId,buttonid,headers)
                        print('等待%s秒' %  (waitDuration + sleep_times))
                        time.sleep(int(waitDuration + sleep_times))
                        lingqu(browsetaskToken,headers)
            if taskId == 22:
                print('>>>>>开始进行%s任务' % taskTitle)
                buttonid = 'jmdd-react-smash_73'
                browseShopVos = taskVos.get('browseShopVo')
                for browseShop in browseShopVos:
                    browsestatus = browseShop.get('status')
                    browsetaskToken = browseShop.get('taskToken')
                    shopName = browseShop.get('shopName')
                    shopId = browseShop.get('shopId')
                    if browsestatus == 1:
                        print('任务“%s”' % shopName)
                        guangdian(taskId,browsetaskToken,shopId,buttonid,headers)
                        print('等待%s秒' % sleep_times)
                        time.sleep(sleep_times)
            if taskId == 15 or taskId == 7:
                print('>>>>>开始进行%s任务' % taskTitle)
                buttonid = 'jmdd-react-smash_73'
                shoppingActivityVos = taskVos.get('shoppingActivityVos')
                for shop in shoppingActivityVos:
                    shopstatus = shop.get('status')
                    taskToken = shop.get('taskToken')
                    shoptitle = shop.get('title')
                    itemId = shop.get('itemId')
                    if shopstatus == 1:
                        print('任务“%s”' % shoptitle)
                        guangdian(taskId,taskToken,itemId,buttonid,headers)
                        print('等待%s秒' % sleep_times)
                        time.sleep(sleep_times)
            if taskId == 10 or taskId == 13 or taskId == 11 or taskId == 12:
                print('>>>>>开始进行%s任务' % taskTitle)
                buttonid = 'jmdd-react-smash_73'
                productInfoVos = getFeedDetail(taskId,headers)
                for productInfoVo in productInfoVos:
                    itemId = productInfoVo.get('itemId')
                    taskToken = productInfoVo.get('taskToken')
                    skuName = productInfoVo.get('skuName')
                    status = productInfoVo.get('status')
                    if status == 1:
                        print('开始加购“%s”' % skuName)
                        ress = guangdian(taskId,taskToken,itemId,buttonid,headers)
                        times = ress.get('data').get('result').get('times')
                        if times == 5:
                            break
                        print('等待%s秒' % sleep_times)
                        time.sleep(sleep_times)
                
            else:
                pass
        print('任务已跑完,如发现还有任务未完成,可以修改times设置多次轮询跑')
    for Cookie in Cookies:
        headers = {
            'Connection': 'keep-alive',
            'Pragma': 'no-cache',
            'Cache-Control': 'no-cache',
            'User-Agent': 'jdapp;Mozilla/5.0 (iPhone; CPU iPhone OS 14_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148;supportJDSHWK/1',
            'Content-Type': 'application/x-www-form-urlencoded',
            'Accept': '*/*',
            'Origin': 'https://wbbny.m.jd.com',
            'Sec-Fetch-Site': 'same-site',
            'Sec-Fetch-Mode': 'cors',
            'Sec-Fetch-Dest': 'empty',
            'Referer': 'https://wbbny.m.jd.com/',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Cookie':Cookie
        }
        sign(headers)
        i = 1
        while i < task_times:
            renwu(headers)
            print('等待5s后重新获取任务')
            time.sleep(5)
            i+=1
    
    print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(int(time.time()))))


    Cookie抓取:

    一、直接使用cookie软件抓取

    二、不会python且不妨exe的用下边方法


    1.推荐使用chrome浏览器,打开浏览器,按F12选择手机模式

    2.浏览器的 User-Agent 必须包含 jdapp,设置含有jdapp的user-agent,设置完成save后记得选择对应的user-agent

    exp:

    jdapp;iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3

    3.访问 https://wbbny.m.jd.com/babelDiy/Zeus/2s7hhSTbhMgxpGoa9JDnbDzJTaBB/index.html#/home,登录京东账号。

    4.登录后,点击network,然后活动中的任务列表,在network中找到那个请求的接口,把Headers 中的Cookie复制出来,直接document出来的貌似失败

微信公众号:薅羊毛活动网
小程序转二维码微信机器人:关注公众号回复 转码
点击这里给我发消息
嘿!有什么能为您效劳的吗?