Esempio n. 1
0
 def check_islogin(self, cookies):
     url = 'https://api.qimai.cn/account/userinfo'
     analysis = _get_analysis('', url)
     url += '?analysis={}'.format(quote(analysis))
     res = self.session.get(url, cookies=cookies).json()
     if res['code'] == 10000:
         print('登录成功!')
         print('Hello, {}! '.format(res['userinfo']['realname']))
         return True
     return False
Esempio n. 2
0
 def _init_captcha(self):
     url = 'https://api.qimai.cn/error/geetestInfo'
     params = {
         'rand': 83
     }
     p_str = self.process_params(params)
     analysis = _get_analysis(p_str, url)
     params.update({
         'analysis': analysis
     })
     result = self.session.get(url, params=params).json()
     if result['success']:
         return result
Esempio n. 3
0
 def test(self, username, cookies):
     print('正在测试 Cookies : {}'.format(username))
     try:
         cookies = json.loads(cookies)
     except TypeError:
         print('Cookies 不合法: ', username)
         if self.cookies_db.delete(username):
             print('删除 Cookies: ', username)
         else:
             print('疑似 redis 断开连接, 删除失败, 尝试调用删除器删除...')
             delete_account(self.site, 'cookies', username)
     try:
         test_url = TEST_URL_MAP[self.site]
         session = requests.session()
         session.headers = {
             'Accept':
             'application/json, text/plain, */*',
             'Content-Type':
             'application/x-www-form-urlencoded; charset=UTF-8',
             'Origin':
             'https://www.qimai.cn',
             'Referer':
             'https://www.qimai.cn/account/signin/r/%2Frank%2Findex%2Fbrand%2Ffree%2Fcountry%2Fcn%2Fgenre%2F5000%2Fdevice%2Fiphone',
             'User-Agent':
             'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
         }
         analysis = _get_analysis('', test_url)
         test_url += '?analysis={}'.format(quote(analysis))
         resp = session.get(test_url, cookies=cookies).json()
         if resp['code'] == 10000:
             nickname = resp['userinfo']['realname']
             if nickname and nickname != '':
                 print('Cookies 有效!')
                 print('Hello, {}! '.format(nickname))
             else:
                 print('Cookies 已过期: {}'.format(username))
                 if self.cookies_db.delete(username):
                     print('删除 Cookies: ', username)
                 else:
                     print('疑似 redis 断开连接, 删除失败, 尝试调用删除器删除...')
                     delete_account(self.site, 'cookies', username)
         else:
             print('Cookies 已过期: {}'.format(username))
             if self.cookies_db.delete(username):
                 print('删除 Cookies: ', username)
             else:
                 print('疑似 redis 断开连接, 删除失败, 尝试调用删除器删除...')
                 delete_account(self.site, 'cookies', username)
     except ConnectionError as e:
         print('发生异常', e.args)
Esempio n. 4
0
 def req_verify(self, phonenumber):
     url = 'https://api.qimai.cn/account/sendPhoneCodeBySignup'
     analysis = _get_analysis('', url)
     params = {
         'analysis': analysis
     }
     validate = self._get_validate()
     validate.update({
         'phone': phonenumber
     })
     result = self.session.post(url, params=params, data=validate).json()
     if result['code'] == 10000:
         return True
     return False
Esempio n. 5
0
    def register(self, phonenumber):
        is_phone_useful = self.check_phone(phonenumber)
        if not is_phone_useful:
            errors = '手机号已被注册! '
            return errors
        success = self.req_verify(phonenumber)
        if not success:
            errors = '验证码接口请求失败! '
            return errors
        print('验证码接口请求成功, 请在60秒内接收! ')
        msg = get_vcode(self.token, self.itemid, phonenumber, 60)
        vcode = re.search(r'您的验证码为(\d+),', msg).group(1)
        print('成功接收验证码: {} '.format(vcode))

        # 模拟人为输入验证码延时
        time.sleep(random.uniform(1.5, 3.0))

        register_api = 'https://api.qimai.cn/account/signupForm'
        analysis = _get_analysis('', register_api)
        params = {
            'analysis': analysis
        }
        password = self.get_random_password()
        print('生成随机密码: {}'.format(password))
        data = {
            'username': '',
            'password': password,
            'repassword': password,
            'email': '',
            'phone': phonenumber,
            'phoneCode': vcode,
            'agreement[0]': 'false'
        }
        result = self.session.post(register_api, params=params, data=data).json()
        if result['code'] == 10000:
            print('注册成功! ')
            return {
                'username': phonenumber,
                'password': password
            }
        error = result['msg']
        return error
Esempio n. 6
0
    def login(self):
        url = 'https://api.qimai.cn/account/signinForm'
        params = {'analysis': _get_analysis('', url)}
        login_api = url + '?' + urlencode(params)
        data = {
            'username': self.username,
            'password': self.password,
            'code': self._get_verifycode()
        }

        self._init_cookies()
        resp = self.session.post(login_api, data=data)
        cookies = self.session.cookies.get_dict()
        if self.check_islogin(cookies):
            return cookies
        elif resp.json()['msg'] == '用户名或密码错误':
            error = '用户名或密码错误'
            return error
        error = resp.json()['msg']
        return error
Esempio n. 7
0
 def check_phone(self, phonenumber):
     """
     检查手机号是否已注册
     :return:
     """
     url = 'https://api.qimai.cn/account/userInfoCheck'
     analysis = _get_analysis('', url)
     params = {
         'analysis': analysis
     }
     data = {
         'field': 'phone',
         'value': phonenumber
     }
     result = self.session.post(url, params=params, data=data).json()
     if result['code'] == 10000:
         return True
     elif result['code'] == 92002:
         print(result['msg'])
     return False