Example #1
0
 def freeProxyTen():
     """
     云代理 http://www.ip3366.net/free/
     :return:
     """
     urls = ['http://www.ip3366.net/free/']
     
     for url in urls:
         r = EasyHttp.get(url, timeout=10)
         if not r:
             Log.w('http://www.ip3366.com无效')
             return []
         proxies = re.findall(r'<td>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td>[\s\S]*?<td>(\d+)</td>', r)
         for proxy in proxies:
             yield ":".join(proxy)
Example #2
0
 def freeProxyNinth():
     """
     码农代理 https://proxy.coderbusy.com/
     :return:
     """
     urls = ['https://proxy.coderbusy.com/classical/country/cn.aspx?page=1']
     
     for url in urls:
         r = EasyHttp.get(url, timeout=10)
         if not r:
             Log.w('http://proxy.coderbusy.com无效')
             return []
         proxies = re.findall('data-ip="(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})".+?>(\d+)</td>', r)
         for proxy in proxies:
             yield ':'.join(proxy)
Example #3
0
 def freeProxyWallFirst():
     """
     墙外网站 cn-proxy
     :return:
     """
     urls = ['http://cn-proxy.com/', 'http://cn-proxy.com/archives/218']
     
     for url in urls:
         r = EasyHttp.get(url, timeout=10)
         if not r:
             Log.w('http://cn-proxy.com无效')
             return []
         proxies = re.findall(r'<td>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td>[\w\W]<td>(\d+)</td>', )
         for proxy in proxies:
             yield ':'.join(proxy)
Example #4
0
    def spawnPeers(self):
        if SSimulator().tick == 0:
            Log.w(Log.DEBUG, "Creating new peers ...")
            for i in range(0, int(SConfig().value("nInitialPeers", "Peer"))):
                self.addPeer()

            for i in range(0, int(SConfig().value("nInitialPeers", "PeerC1"))):
                self.addPeer_C1()

        else:
            if self.spawnPeer() == True:
                self.addPeer()

            if self.spawnPeer_C1() == True:
                self.addPeer_C1()
Example #5
0
 def freeProxyWallSecond():
     """
     https://proxy-list.org/english/index.php
     :return:
     """
     urls = ['https://proxy-list.org/english/index.php?p=%s' % n for n in range(1, 10)]
     
     import base64
     for url in urls:
         r = EasyHttp.get(url, timeout=10)
         if not r:
             Log.w('http://proxy-list.org/english/index.php无效')
             return []
         proxies = re.findall(r"Proxy\('(.*?)'\)", r)
         for proxy in proxies:
             yield base64.b64decode(proxy).decode()
Example #6
0
 def freeProxyTwelve(page_count=2):
     """
     guobanjia http://ip.jiangxianli.com/?page=
     免费代理库
     超多量
     :return:
     """
     for i in range(1, page_count + 1):
         url = 'http://ip.jiangxianli.com/?page={}'.format(i)
         html_tree = EasyHttp.getHtmlTree(url)
         if not html_tree:
             Log.w('http://ip.jiangxianli.com无效')
             return []
         tr_list = html_tree.xpath("/html/body/div[1]/div/div[1]/div[2]/table/tbody/tr")
         if len(tr_list) == 0:
             continue
         for tr in tr_list:
             yield tr.xpath("./td[2]/text()")[0] + ":" + tr.xpath("./td[3]/text()")[0]
Example #7
0
    def freeProxyEight():
        """
        秘密代理 http://www.mimiip.com
        """
        url_gngao = ['http://www.mimiip.com/gngao/%s' % n for n in range(1, 2)]  # 国内高匿
        url_gnpu = ['http://www.mimiip.com/gnpu/%s' % n for n in range(1, 2)]  # 国内普匿
        url_gntou = ['http://www.mimiip.com/gntou/%s' % n for n in range(1, 2)]  # 国内透明
        url_list = url_gngao + url_gnpu + url_gntou

        
        for url in url_list:
            r = EasyHttp.get(url, timeout=10)
            if not r:
                Log.w('http://www.mimiip.com无效')
                return []
            proxies = re.findall(r'<td>(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})</td>[\w\W].*<td>(\d+)</td>', r)
            for proxy in proxies:
                yield ':'.join(proxy)
Example #8
0
 def __waitForOrderId(self):
     Log.v('正在排队获取订单!')
     count = 0
     while True:
         count += 1
         status, msg, waitTime, orderId, errorMsg = self._queryOrderWaitTime(
         )
         if not Utils.check(status, 'queryOrderWaitTime: %s' % msg):
             return None
         Log.v('[%d]正在等待订单提交结果...' % count)
         if waitTime < 0:
             if orderId:
                 Log.v('订单提交成功,订单号: %s' % orderId)
                 return orderId
             elif errorMsg:
                 Log.v(errorMsg)
                 return None
         Log.w('订单提交正在入队...')
         time.sleep(3)
     return None
Example #9
0
def cut_image(dir_address, img_name):
    f_name = os.path.join(dir_address, img_name)
    im = read_image(f_name)
    if im is None:
        Log.w("该图片{ %s }处理异常: " % img_name)
        return
    all_pic = dir_address + '/pic'
    write_image(get_text(im), os.path.join(all_pic, img_name))
    num = 1
    sub_name = img_name.split('.')
    for sub_im in get_image(im):
        sub_img_name = sub_name[0] + '_' + str(num) + '.' + sub_name[1]
        num += 1
        write_image(sub_im, os.path.join(all_pic, sub_img_name))

    #开始验证图片百度/Tencent
    if IMAGE_OCR_SERVICE_CHOOSE == IMAGE_OCR_SERVICE_BAIDU:
        image = ImageClassify(BAIDU_APP_ID, BAIDU_API_KEY, BAIDU_SECRET_ID)
        captcha_name = image.resolve_words(os.path.join(all_pic,
                                                        img_name)) or ''
        pass
    elif IMAGE_OCR_SERVICE_CHOOSE == IMAGE_OCR_SERVICE_TENCENT:
        image = TencentAI(TENCENT_APP_ID, TENCENT_SECRET_KEY)
        captcha_name = image.resolve_words(os.path.join(all_pic,
                                                        img_name)) or ''

    flag_name = set(captcha_name)
    Log.w('找出:' + captcha_name)
    img_list = sorted(os.listdir(all_pic))
    results = []
    for i in img_list:
        if i == img_name:
            continue
        c_path = os.path.join(all_pic, i)
        index = int(i.split('.')[0].split('_')[1]) - 1
        if IMAGE_OCR_SERVICE_CHOOSE == IMAGE_OCR_SERVICE_BAIDU:
            resolve_name = image.resolve_image(c_path) or ''
            pass
        elif IMAGE_OCR_SERVICE_CHOOSE == IMAGE_OCR_SERVICE_TENCENT:
            resolve_name = image.resolve_image(os.path.join(all_pic,
                                                            img_name)) or ''

        Log.w('第' + str(index) + '图片识别为:' + resolve_name)
        variable_name = set(resolve_name)
        if flag_name.intersection(variable_name):
            results.append(str(index))
    #内测阶段,不删除文件
    # remove_pic(dir_address,img_name)
    Log.w('结果集是:' + ','.join(results))
    return ','.join(results)
Example #10
0
def main():
    login = Login()
    Log.v("正在登录...")
    result, msg = login.login(USER_NAME, USER_PWD)
    if not Utils.check(result, msg):
        Log.e(msg)
        return
    Log.v("%s,登录成功" % msg)

    seatTypesCode = (SEAT_TYPE_CODE if SEAT_TYPE_CODE else
                     [SEAT_TYPE[key] for key in SEAT_TYPE.keys()])
    passengerTypeCode = PASSENGER_TYPE_CODE if PASSENGER_TYPE_CODE else "1"
    while True:
        # 无限循环一直查票,直到下单成功
        try:
            print("-" * 40)
            ticketDetails = Query.loopQuery(
                TRAIN_DATE,
                FROM_STATION,
                TO_STATION,
                TrainUtils.passengerType2Desc(passengerTypeCode),
                TRAINS_NO,
                seatTypesCode,
            )
            Log.v("已为您查询到可用余票:%s" % ticketDetails)

            ticketDetails.passengersId = PASSENGERS_ID
            ticketDetails.ticketTypeCodes = passengerTypeCode
            ticketDetails.tourFlag = TOUR_FLAG if TOUR_FLAG else "dc"
            submit = Submit(ticketDetails)
            if submit.submit():
                submit.showSubmitInfoPretty()
                break
            time.sleep(1)
        except Exception as e:
            Log.w(e)
    print(login.loginOut())
Example #11
0
def main():
    #免费代理ip访问
    GetFreeProxy.getAllProxy(THREAD_POOL_SIZE, THREAD_OR_PROCESS,
                             IS_REFASH_IP_POOL)
    init_ip_pool()

    EasyHttp.load_cookies(COOKIE_SAVE_ADDRESS)
    cookies = {c.name: c.value for c in EasyHttp.get_session().cookies}

    RAIL_EXPIRATION = cookies.get('RAIL_EXPIRATION')
    #(int(RAIL_EXPIRATION)-172800000) < int(time.time()*1000)
    if RAIL_EXPIRATION and int(RAIL_EXPIRATION) < int(time.time() * 1000):
        Log.d('cookie登录已过期,重新请求')
        status, login = do_login()
        if not status:
            return
    else:
        if not ('uamtk' in cookies and 'RAIL_DEVICEID' in cookies):
            status, login = do_login()
            if not status:
                return
        else:
            response = EasyHttp.post_custom(loginUrls['normal']['conf'])
            if not response or not response.json():
                Log.d('登录状态检查失败,重新请求')
                status, login = do_login()
                if not status:
                    return
            resp = response.json()
            login_status = resp.get('data').get('is_login')
            Log.d('登录状态:%s' % login_status)
            if 'Y' != login_status:
                Log.d('登录状态已过期,重新请求')
                status, login = do_login()
                if not status:
                    return
            login = Login()
            login._urlInfo = loginUrls['normal']
            Log.v('已登录状态,开始寻找小票票')

    seatTypesCode = SEAT_TYPE_CODE if SEAT_TYPE_CODE else [
        SEAT_TYPE[key] for key in SEAT_TYPE.keys()
    ]
    passengerTypeCode = PASSENGER_TYPE_CODE if PASSENGER_TYPE_CODE else '1'

    count = 0
    while True:
        # 死循环一直查票,直到下单成功
        try:
            nowTime, status = deadline.do_fix_time()
            if status:
                Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
                continue

            count += 1
            Log.v('第%d次访问12306网站' % count)
            print('-' * 40)
            ticketDetails = Query.loopQuery(
                TRAIN_DATE, FROM_STATION, TO_STATION,
                TrainUtils.passengerType2Desc(passengerTypeCode), TRAINS_NO,
                seatTypesCode, PASSENGERS_ID, POLICY_BILL,
                QUERY_TICKET_REFERSH_INTERVAL)
            Log.v('已为您查询到可用余票:%s' % ticketDetails)

            ticketDetails.passengersId = PASSENGERS_ID
            ticketDetails.ticketTypeCodes = passengerTypeCode
            ticketDetails.tourFlag = TOUR_FLAG if TOUR_FLAG else 'dc'
            submit = Submit(ticketDetails)
            seats_default = copy.deepcopy(CHOOSE_SEATS)
            if (ticketDetails.seatType == SEAT_TYPE[SeatName.FIRST_CLASS_SEAT]
                    or ticketDetails.seatType
                    == SeatName.SECOND_CLASS_SEAT) and not seats_default:
                results_seat = []
                for i in range(len(PASSENGERS_ID)):
                    random_seat = random.choice(NUM_SEAT) + random.choice(
                        LETTER_SEAT)
                    if random_seat in results_seat:
                        continue
                    results_seat.append(random_seat)
                seats_default.extend(results_seat)

            if submit.submit(seats_default):
                status, contents = submit.showSubmitInfoPretty()
                if status:
                    flag = send_mail(mail_user, mailto_list, '12306订票结果通知',
                                     mail_host, mail_user, mail_pass, contents)
                    if flag:
                        Log.v("邮件发送成功!")
                    else:
                        Log.v("邮件发送失败!")
                    sms_id = send_sms(ACCOUNT_SID, AUTO_TOKEN, FROM_NUM,
                                      TO_NUM,
                                      '小机机已经成功拿到小票票,请主人记得在30分钟内完成支付!!!')
                    if sms_id:
                        Log.v("短信提醒发送成功!")
                    else:
                        Log.v("短信提醒发送失败!")
                break
            time.sleep(1)
        except Exception as e:
            Log.w(e)
    login.loginOut()
    Log.d('注销登录成功')
Example #12
0
    passengersId = input('请输入乘客身份证号(多个以,分隔): ').strip().split(',')
    tourFlag = input('单程:%s,往返:%s(默认%s): ' %
                     (TourFlag.SINGLE, TourFlag.GO_BACK,
                      TourFlag.SINGLE)).strip() or TourFlag.SINGLE
    Log.d('出发日期: %s,座位类别: %s,乘客类型: %s,车票类型: %s' %
          (trainDate, seatTypesCode, passengerTypeCode, tourFlag))

    session = requests.session()

    login = Login(session)
    for count in range(1, 10, 1):
        Log.v('[%d]正在进行登录...' % count)
        result, msg = login.login(userName, userPwd, type=(count - 1) % 2)
        if Utils.check(result, msg):
            break
        Log.w('登录失败,正在重新进行登录...')
    if not Utils.check(login.isLogin(), '登录失败,程序退出!'):
        exit(-1)
    Log.v('%s,登录成功' % msg)
    ticketDetails = Query.loopQuery(
        session, trainDate, fromStation, toStation,
        TrainUtils.passengerType2Desc(passengerTypeCode), seatTypesCode)
    if not Utils.check(ticketDetails, '刷票失败!'):
        exit(-1)
    Log.v('已为您查询到可用余票:%s' % ticketDetails)

    ticketDetails.passengersId = passengersId
    ticketDetails.ticketTypeCodes = passengerTypeCode
    ticketDetails.tourFlag = tourFlag
    submit = Submit(session, ticketDetails)
    try:
Example #13
0
 def addPeer_C1(self):
     uploadRate = random.randint(self.C1uMin, self.C1uMax)
     downloadRate = random.randint(self.C1dMin, self.C1dMax)
     sleep = random.randint(0, self._C1maxSleep)
     p = Peer_C1(Torrent(self.__tracker), uploadRate, downloadRate, sleep)  # Create new peer
     Log.w(Log.INFO, "New Peer_C1 {} Up/Down [{}/{}] Sleep {}".format(p.pid, uploadRate, downloadRate, sleep))
Example #14
0
def main():
    eHttp.load_cookies(COOKIE_SAVE_ADDRESS)
    cookies = {c.name: c.value for c in eHttp.get_session().cookies}
    if not ('uamtk' in cookies and 'RAIL_DEVICEID' in cookies):
            status,login = do_login()
            if not status:
                return
    else:
        response = eHttp.post_custom(loginUrls['normal']['conf'])
        if not response or not response.json():
            Log.d('登录状态检查失败,重新请求')
            status, login = do_login()
            if not status:
                return
        resp = response.json()
        login_status = resp.get('data').get('is_login')
        login_name = resp.get('data').get('name')
        Log.d('登录状态:%s'%login_status)
        if 'Y' != login_status:
            Log.d('登录状态已过期,重新请求')
            status, login = do_login()
            if not status:
                return
        login = Login()
        login._urlInfo = loginUrls['normal']
        if login_name is not None:
            Log.v(login_name + ': 已登录状态,开始寻找车票')

    count = 0
    while True:
        # 死循环查票直到下单成功
        try:
            nowTime, status = do_fix_time()
            if status:
                Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
                continue
            count += 1
            Log.v('\n第%d次访问12306网站' % count)
            print('-' * 40)
            ticketDetails = Query.loopQuery(TRAIN_DATE, FROM_STATION, TO_STATION,
                                            passengerType2Desc(PASSENGER_TYPE_CODE),
                                            TRAINS_NO, SEAT_TYPE_CODE, PASSENGERS_ID, 
                                            POLICY_BILL, QUERY_TICKET_REFERSH_INTERVAL)
            Log.v('已为您查询到可用余票:%s' % ticketDetails)
            ticketDetails.passengersId = PASSENGERS_ID
            ticketDetails.ticketTypeCodes = PASSENGER_TYPE_CODE
            ticketDetails.tourFlag = TOUR_FLAG
            submit = Submit(ticketDetails)
            seats_default = copy.deepcopy(CHOOSE_SEATS)
            if (ticketDetails.seatType == SEAT_TYPE[SeatName.FIRST_CLASS_SEAT] or ticketDetails.seatType == SEAT_TYPE[SeatName.SECOND_CLASS_SEAT]) and not seats_default:
                results_seat = []
                for i in range(len(PASSENGERS_ID)):
                    random_seat = random.choice(NUM_SEAT)+random.choice(LETTER_SEAT)
                    if random_seat in results_seat:
                        continue
                    results_seat.append(random_seat)
                seats_default.extend(results_seat)    
            if submit.submit(seats_default):
                Log.v("您已成功订购火车票!请在30分钟内前往12306官方网站进行支付")
                break
            else:
                Log.v("购票失败,重新请求")
                time.sleep(5)
        except Exception as e:
            Log.w(e)
            time.sleep(5)
Example #15
0
def super_hero(love):
    Log.v('启动***超级英雄***线程')
    #免费代理ip访问
    GetFreeProxy.getAllProxy(THREAD_POOL_SIZE, THREAD_OR_PROCESS,
                             IS_REFASH_IP_POOL)
    init_ip_pool()

    EasyHttp.load_cookies(COOKIE_SAVE_ADDRESS)
    cookies = {c.name: c.value for c in EasyHttp.get_session().cookies}

    if 'uamtk' not in cookies or 'RAIL_DEVICEID' not in cookies:
        status, login = do_login(love)
        if not status:
            love.change_offline_status(True)
            return
    else:
        status, _ = check_user_login()
        if not status:
            status, login = do_login(love)
            if not status:
                love.change_offline_status(True)
                return

        Log.v('已登录状态,开始寻找小票票')

    seatTypesCode = SEAT_TYPE_CODE if SEAT_TYPE_CODE else [
        SEAT_TYPE[key] for key in SEAT_TYPE.keys()
    ]
    passengerTypeCode = PASSENGER_TYPE_CODE if PASSENGER_TYPE_CODE else '1'
    Log.d("订单详情:日期[%s]/区间[%s至%s]%s%s/刷票间隔[%ss]" %
          (','.join(TRAIN_DATE), FROM_STATION, TO_STATION,
           '/出发时间段[' + '~'.join(leave_time) + ']' if leave_time else '',
           '/车次[' + ','.join(TRAINS_NO) + ']' if TRAINS_NO else '',
           QUERY_TICKET_REFERSH_INTERVAL))
    count = 0
    while True:
        try:
            nowTime, status = deadline.do_fix_time()
            if status:
                Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
                continue

            count += 1
            Log.v('第%d次访问12306网站' % count)
            print('-' * 40)
            ticketDetails = Query.loopQuery(
                TRAIN_DATE, FROM_STATION, TO_STATION,
                TrainUtils.passengerType2Desc(passengerTypeCode), TRAINS_NO,
                seatTypesCode, PASSENGERS_ID, leave_time, POLICY_BILL,
                QUERY_TICKET_REFERSH_INTERVAL)
            status = love.get_login_status()
            # status,_ = check_user_login()
            if not status:
                #非登录状态有票,仅支持自动登录或第三方AI自动登录
                if SELECT_AUTO_CHECK_CAPTHCA == CAPTCHA_CHECK_METHOD_HAND:
                    Log.e("手动模式登录状态已过期,请手动重试...")

                status, login = do_login(love)
                if not status:
                    Log.e("登录状态已过期,重试登录失败")
                    love.change_offline_status(True)
                    return

            # Log.v('已为您查询到可用余票:%s' % ticketDetails)
            Log.v('已为您查询到可用余票:[日期:%s,车次:%s,出发站:%s,到达站:%s,出发时间:%s,到达时间:%s]' %
                  (ticketDetails.custom_date, ticketDetails.trainNo,
                   ticketDetails.fromStation, ticketDetails.toStation,
                   ticketDetails.leaveTime, ticketDetails.arriveTime))

            ticketDetails.passengersId = PASSENGERS_ID
            ticketDetails.ticketTypeCodes = passengerTypeCode
            ticketDetails.tourFlag = TOUR_FLAG if TOUR_FLAG else 'dc'
            submit = Submit(ticketDetails)
            seats_default = copy.deepcopy(CHOOSE_SEATS)
            if submit.submit(seats_default):
                status, contents = submit.showSubmitInfoPretty()
                if status:
                    Log.v("获取车票详情成功")
                    flag = send_mail(mail_user, mailto_list, '12306订票结果通知',
                                     mail_host, mail_user, mail_pass, contents)
                    if flag:
                        Log.v("邮件发送成功!")
                    else:
                        Log.v("邮件发送失败!")

                sms_id = send_sms(ACCOUNT_SID, AUTO_TOKEN, FROM_NUM, TO_NUM,
                                  '小机机已经成功拿到小票票,请主人记得在30分钟内完成支付!!!')
                if sms_id:
                    Log.v("短信提醒发送成功!")
                else:
                    Log.v("短信提醒发送失败!")
                break
            time.sleep(1)
        except Exception as e:
            Log.w(e)
    login.loginOut()
    Log.d('注销登录成功')
    love.change_offline_status(True)
Example #16
0
def working(username=USER_NAME,
            password=USER_PWD,
            id_cards=PASSENGERS_ID,
            day=TRAIN_DATE,
            from_station=FROM_STATION,
            to_station=TO_STATION,
            seats=SEAT_TYPE_CODE,
            types=PASSENGER_TYPE_CODE,
            train_no=TRAINS_NO,
            polocy=POLICY_BILL,
            tour_flag=TOUR_FLAG,
            refersh=QUERY_TICKET_REFERSH_INTERVAL):
    login = Login()
    Log.v('正在登录...')
    result, msg = login.login(username, password, IS_AUTO_CHECK_CAPTHCA)
    if not Utils.check(result, msg):
        Log.e(msg)
        return
    Log.v('%s,登录成功' % msg)

    seatTypesCode = seats if seats else [
        SEAT_TYPE[key] for key in SEAT_TYPE.keys()
    ]
    passengerTypeCode = types if types else '1'

    count = 0
    while True:
        # 死循环一直查票,直到下单成功
        try:
            nowTime, status = deadline.do_fix_time()
            if status:
                Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
                continue

            count += 1
            Log.v('第%d 次访问12306网站' % count)
            print('-' * 40)
            ticketDetails = Query.loopQuery(
                day, from_station, to_station,
                TrainUtils.passengerType2Desc(passengerTypeCode), train_no,
                seatTypesCode, id_cards, polocy, refersh)
            Log.v('已为您查询到可用余票:%s' % ticketDetails)

            ticketDetails.passengersId = id_cards
            ticketDetails.ticketTypeCodes = passengerTypeCode
            ticketDetails.tourFlag = tour_flag if tour_flag else 'dc'
            submit = Submit(ticketDetails)
            if submit.submit(CHOOSE_SEATS):
                status, contents = submit.showSubmitInfoPretty()
                if status:
                    flag = send_mail(mail_user, mailto_list, '12306订票结果通知',
                                     mail_host, mail_user, mail_pass, contents)
                    if flag:
                        Log.v("邮件发送成功!")
                    else:
                        Log.v("邮件发送失败!")
                    sms_id = send_sms(ACCOUNT_SID, AUTO_TOKEN, FROM_NUM,
                                      TO_NUM,
                                      '小机机已经成功拿到小票票,请主人记得在30分钟内完成支付!!!')
                    if sms_id:
                        Log.v("短信提醒发送成功!")
                    else:
                        Log.v("短信提醒发送成功!")
                break
            time.sleep(1)
        except Exception as e:
            Log.w("提交操作异常:" + e)
    print(login.loginOut())
Example #17
0
def main():
    #免费代理ip访问
    GetFreeProxy.getAllProxy(THREAD_POOL_SIZE, THREAD_OR_PROCESS,
                             IS_REFASH_IP_POOL)
    init_ip_pool()

    EasyHttp.load_cookies(COOKIE_SAVE_ADDRESS)
    cookies = {c.name: c.value for c in EasyHttp.get_session().cookies}

    RAIL_EXPIRATION = cookies.get('RAIL_EXPIRATION')
    #当前实际显示有效时间为4天,实际访问可下单时间大概为2天(细节可按实际情况调节)
    if 'RAIL_EXPIRATION' in cookies and (int(RAIL_EXPIRATION) -
                                         172800000) < int(time.time() * 1000):
        Log.v('cookie登录已过期,重新请求')
        EasyHttp.removeCookies()
        status, login = do_login()
        if not status:
            return
    else:
        if not ('uamtk' in cookies and 'RAIL_DEVICEID' in cookies):
            status, login = do_login()
            if not status:
                return
        else:
            login = Login()
            Log.v('已登录状态,开始寻找小票票')

    seatTypesCode = SEAT_TYPE_CODE if SEAT_TYPE_CODE else [
        SEAT_TYPE[key] for key in SEAT_TYPE.keys()
    ]
    passengerTypeCode = PASSENGER_TYPE_CODE if PASSENGER_TYPE_CODE else '1'

    count = 0
    while True:
        # 死循环一直查票,直到下单成功
        try:
            nowTime, status = deadline.do_fix_time()
            if status:
                Log.v('当前时间:%s 处于23点到6点之间,12306处于维护状态,暂不处理下单业务' % nowTime)
                continue

            count += 1
            Log.v('第%d次访问12306网站' % count)
            print('-' * 40)
            ticketDetails = Query.loopQuery(
                TRAIN_DATE, FROM_STATION, TO_STATION,
                TrainUtils.passengerType2Desc(passengerTypeCode), TRAINS_NO,
                seatTypesCode, PASSENGERS_ID, POLICY_BILL,
                QUERY_TICKET_REFERSH_INTERVAL)
            Log.v('已为您查询到可用余票:%s' % ticketDetails)

            ticketDetails.passengersId = PASSENGERS_ID
            ticketDetails.ticketTypeCodes = passengerTypeCode
            ticketDetails.tourFlag = TOUR_FLAG if TOUR_FLAG else 'dc'
            submit = Submit(ticketDetails)
            if submit.submit(CHOOSE_SEATS):
                status, contents = submit.showSubmitInfoPretty()
                if status:
                    flag = send_mail(mail_user, mailto_list, '12306订票结果通知',
                                     mail_host, mail_user, mail_pass, contents)
                    if flag:
                        Log.v("邮件发送成功!")
                    else:
                        Log.v("邮件发送失败!")
                    sms_id = send_sms(ACCOUNT_SID, AUTO_TOKEN, FROM_NUM,
                                      TO_NUM,
                                      '小机机已经成功拿到小票票,请主人记得在30分钟内完成支付!!!')
                    if sms_id:
                        Log.v("短信提醒发送成功!")
                    else:
                        Log.v("短信提醒发送失败!")
                break
            time.sleep(1)
        except Exception as e:
            Log.w(e)
    login.loginOut()
    Log.d('注销登录成功')
Example #18
0
    #Load Config
    SConfig.setPath( sys.argv[1] )
    C = SConfig()
    
    print("Starting Simulation with config {0}".format(sys.argv[1] ))
    #import time
    #time.sleep(5)
    random.seed(int(SConfig().value("randSeed")))
    newLog = Log() #Create this log for the whole project
    logging.log(Log.INFO, "Starting simulation") 
    
    S = SSimulator()
    T = Tracker()
    O = Observer( T )    
    
    logging.log(Log.INFO, "Creating nodes ...")
        
    tor = Torrent( T )
    Log.w(Log.INFO, "Piece size [{0}] bytes".format(tor.pieceSizeBytes) )
    s = Seeder( tor , SConfig().value("SeederUpload"), SConfig().value("SeederDownload") )
    
    logging.log(Log.INFO, "Creating {0}".format(s))
    
    pF = PeerFactory(T)

    S.start()

    logging.log(Log.INFO, "Ending simulation")    
    
    sys.exit(0)