Ejemplo n.º 1
0
def mulRefreshToken(isHost):
    global counts
    print("[nkBot]>开始获取Refresh Token")
    account = MySqlDao()
    res = account.exec("SELECT * FROM nikeaccount where refreshToken is NULL")
    for re in res:
        refreshToken(re[0], re[1], re[2])
Ejemplo n.º 2
0
def getEntryResults1(limit = ''):
    orders = MySqlDao()
    if limit != '':
        list = orders.rows("SELECT * FROM `nikeorder` where results is null limit "+limit)
    else:
        list = orders.rows("SELECT * FROM `nikeorder` where results is null limit ")
    while 1:
        if len(list) == 0:
            break
        for re in list:
            if (re[2]):
                headers = {"authorization": "Bearer " + re[2]}
                try:
                    response = requests.get("https://api.nike.com/launch/entries/v2/" + re[1], headers=headers).json()
                except:
                    print ("ban ip")
                try:
                    if response["waitingReason"]=="OUT_OF_STOCK":
                        print ("NonWinner")
                        orders.exec("UPDATE `nikeorder` SET `results`='fail' WHERE orderid = '"+re[1]+"'")
                    print (response["waitingReason"])
                except Exception:
                    print (response)
                try:
                    result = response["result"]

                except:
                    continue
                if result["status"] == "WINNER":
                    print ("[nkBot]Draw Enrty username:"******"UPDATE `nikeorder` SET `results`='success' WHERE orderid = '"+re[1]+"'")
                elif result["status"] == "NON_WINNER":
                    print ("NonWinner")
                    orders.exec("UPDATE `nikeorder` SET `results`='fail' WHERE orderid = '"+re[1]+"'")
Ejemplo n.º 3
0
def mulLaunchEntry(nikeitems, useHost=False, limit=''):
    account = MySqlDao()
    if limit != '':
        res = account.rows(
            "select * from nikeaccount where `token` is not null ORDER BY accessTime DESC limit "
            + limit)
    else:
        res = account.rows(
            "select * from nikeaccount where `token` is not null ORDER BY accessTime DESC "
        )
    # res = account.rows("select * from nikeaccount where `id` = 101  ORDER BY accessTime DESC")
    print("[nkBot]System>Start Entry")
    print("[nkBot]System>This Task have " + str(len(res)) + " accouts")
    if useHost:
        host = getProxy()
    else:
        host = '0.0.0.0'
    data = []
    for re in res:
        nikeaccount = NikeAccount(re[1], re[2], host, re[5])
        if nikeaccount:
            nikeitem = choice(nikeitems)
            data.append((nikeaccount, nikeitem))
    pool = ThreadPoolExecutor()
    responseList = list(pool.map(launchEntrie, data))
    return responseList
Ejemplo n.º 4
0
def registerFromExcel():
    f = xlrd.open_workbook('account.xlsx')
    table = f.sheet_by_index(0)
    nrows = table.nrows
    sqlite = MySqlDao()
    print (nrows)
    for i in range(nrows):
        email = table.cell(i,0).value
        pwd = table.cell(i,1).value
        sql = "INSERT INTO `nikeaccount`(`email`, `password`) VALUES ('"+email+"','"+pwd+"')"
        sqlite.exec(sql)
Ejemplo n.º 5
0
def registerFromTxt():
    f = open("account.txt","r")
    line = f.readline()
    count = 0
    while line:
        line = line.split(':')
        email = line[0]
        pwd = line[1]
        sql = "INSERT INTO `nikeaccount`(`email`, `password`) VALUES ('"+email+"','"+pwd+"')"
        mysql = MySqlDao()
        mysql.exec(sql)
        count+=1
        line = f.readline()
    f.close()
Ejemplo n.º 6
0
def registerFromTxtWithRefreshToken():
    rootPath = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
    f = open(rootPath+os.sep+"account-token.txt","r")
    line = f.readline()
    count = 0
    while line:
        line = line.split(',')
        email = line[0]
        pwd = line[1]
        phone = ''
        token = line[3]
        clientId = line[2]
        sql = "insert  into nikeaccount (email, password, phone, refreshToken, clientId) VALUES ('"+email+"','"+pwd+"','"+phone+"','"+token+"','"+clientId+"')"
        mysql = MySqlDao()
        mysql.exec(sql)
        count+=1
        print("[nkBot]>Import "+str(count)+"st Account")
        line = f.readline()
    f.close()
Ejemplo n.º 7
0
def mulAcToken(isHost, limit=''):
    print(time.strftime('%Y/%m/%d %H:%M:%S', time.localtime(time.time())))
    logger = Logger('AccessToken')
    account = MySqlDao()
    # res = account.rows("select * from nikeaccount where id >50 and id <= 100")
    if limit != '':
        res = account.rows("select * from nikeaccount limit " + limit)
    else:
        res = account.rows("select * from nikeaccount")
    print("[nkBot]>get " + str(len(res)) + " accounts Access Token")
    data = []
    for re in res:
        if re[4] and re[8]:
            data.append((re[0], re[4], re[8], isHost))
    if len(data):
        pool = ThreadPoolExecutor()
        res = list(pool.map(accessToken, data))
        logger.write(res)
    else:
        pass
Ejemplo n.º 8
0
def accessToken(tup):
    id, token, client_id, isHost = tup
    url = 'https://api.nike.com/idn/shim/oauth/2.0/token'
    data = {
        # 'client_id':'HlHa2Cje3ctlaOqnxvgZXNaAs7T9nAuH',
        'client_id': client_id,
        'grant_type': 'refresh_token',
        'ux_id': 'com.nike.commerce.snkrs.ios',
        'refresh_token': token
    }
    try:
        if isHost:
            a = httpRequest.Post(url=url,
                                 data=data,
                                 proxy=True,
                                 timeout=TimeOut)
            # a = requests.post('https://api.nike.com/idn/shim/oauth/2.0/token',json=data,verify=False,proxies=proxies, timeout=TimeOut)
        else:
            a = requests.post('https://api.nike.com/idn/shim/oauth/2.0/token',
                              json=data,
                              verify=False,
                              timeout=TimeOut)
    except Exception:
        return "[nkBot]" + str(id) + ">代理连接失败!"
    try:
        access_token = a.json()['access_token']
    except Exception:
        account = MySqlDao()
        account.exec(
            "UPDATE `nikeaccount` SET `token`= 'fail',`accessTime`='" +
            str(time.time()) + "' WHERE id = " + str(id))
        return "[nkBot]" + str(id) + ">Update Access Token Fail:" + str(
            a.json())
    account = MySqlDao()
    account.exec("UPDATE `nikeaccount` SET `token`= '" + access_token +
                 "',`accessTime`='" + str(time.time()) + "' WHERE id = " +
                 str(id))
    return "[nkBot]" + str(id) + ">Update Access Token Success!"
Ejemplo n.º 9
0
def refreshToken(accountId, username, password, host='0.0.0.0'):
    global counts
    account = MySqlDao()
    try:
        print("username" + username)
        token = getTokenEmail('refresh_token', username, password, host)
    except Exception:
        counts -= 1
        account.exec("UPDATE `nikeaccount` SET `time`='failOnce' WHERE id = " +
                     str(accountId))
        print('[nkBot]>update fail')
        return
    account.exec("UPDATE `nikeaccount` SET `refreshToken`= '" + token +
                 "',`time`='" + time.asctime(time.localtime(time.time())) +
                 "' WHERE id = " + str(accountId))
    print("[nkBot]Update " + username + "-" + password + " token.")
    counts -= 1
    return
Ejemplo n.º 10
0
                except Exception:
                    print (response)
                try:
                    result = response["result"]

                except:
                    continue
                if result["status"] == "WINNER":
                    print ("[nkBot]Draw Enrty username:"******"UPDATE `nikeorder` SET `results`='success' WHERE orderid = '"+re[1]+"'")
                elif result["status"] == "NON_WINNER":
                    print ("NonWinner")
                    orders.exec("UPDATE `nikeorder` SET `results`='fail' WHERE orderid = '"+re[1]+"'")


orders = MySqlDao()

def getEntryResults():
    orderList = orders.rows("SELECT * FROM `nikeorder` where results is null ")
    entryLoop(orderList)

def updateOrders(ids,result):
    id = ",".join(ids)
    orders.exec("UPDATE `nikeorder` SET `results`='" +result+ "' WHERE id in (" + id + ")")

def entryLoop(orderList):
    if len(orderList) == 0:
        return 0
    if len(orderList) == 0:
        return 0
    data = []
Ejemplo n.º 11
0
def launchEntrie(tup):
    account, item = tup
    global EntryList
    pTOKEN = getPaymentToken(account, item)
    setCheckoutId(account, item)
    PCS = getPriceChecksum(account)
    proxies = {'http': account.host, 'https': account.host}
    url = "https://api.nike.com/launch/entries/v2"
    deviceId = generatefingerprint()
    headers = {
        "Authorization": "Bearer " + account.access_token,
        "Content-Type": "application/json",
        'x-acf-sensor-data': XAcfSensorData,
        "x-nike-caller-id": xNikeCaller,
        "User-Agent": UserAgent,
        "X-NewRelic-ID": "VQYGVF5SCBADUVBRBgAGVg=="
    }
    data = {
        "deviceId": deviceId,
        "postpayLink": item.postpayLink,
        "checkoutId": account.checkoutId,
        "currency": "CNY",
        "paymentToken": pTOKEN,
        "shipping": {
            "recipient": account.launchRecipient,
            "method": "GROUND_SERVICE",
            "address": account.launchAddress
        },
        "skuId": item.skuId,
        "channel": "SNKRS",
        "launchId": item.launchId,
        "priceChecksum": PCS,
        "locale": "zh_CN"
    }
    if account.host == '0.0.0.0':
        try:
            response = requests.post(url, headers=headers, json=data).json()
        except requests.exceptions.Timeout:
            print("[nkBot]Error>noHost>Timeout>Connect Entry Fail!")
            return
        except Exception:
            print("[nkBot]Error>noHost>Connect Entry Fail!")
            return
    else:
        try:
            response = requests.post(url,
                                     headers=headers,
                                     json=data,
                                     proxies=proxies).json()
        except requests.exceptions.Timeout:
            print("[nkBot]Error>Host>Timeout>Connect Entry Fail!")
            return
        except Exception:
            print("[nkBot]Error>Host>Connect Entry Fail!")
            return
    try:
        na = MySqlDao()
        sql = "INSERT INTO nikeorder( orderid, accessToken, accountName) VALUES ('" + response[
            'id'] + "','" + account.access_token + "','" + account.username + "');"
        na.exec(sql)
        print("[nkBot]" + account.username + ">Entry Success!")
    except Exception:
        print("[nkBot]Error>" + account.username + ">Entry Fail!" +
              str(response))
        na = MySqlDao()
        sql = "INSERT INTO nikeorder (accountName) VALUES ('fail');"
        na.exec(sql)
    return response