def verify_code(self):
     timestemp = time.time()
     imgurl = 'http://api.chaxun.la/api/seccode/?0.{0}'.format(timestemp)
     if self.download(imgurl):
         captcha = Captcha()
         code_result = captcha.verification(filename='captcha.gif')
         self.verify = code_result.get('Result')
Ejemplo n.º 2
0
    def like(self, photo_id):
        captcha = False
        captcha_result = ''
        captcha_sid = ''

        while True:

            owner_id, item_id = photo_id.split('_')

            if captcha == False:
                url = self.getUrl.likes.add(type='photo', owner_id=owner_id, item_id=item_id)
            else:
                url = self.getUrl.likes.add(type='photo', owner_id=owner_id, item_id=item_id, captcha_sid=captcha_sid, captcha_key=captcha_result)

            self.requester(url, self.session)

            response = self.requester.request()
            for r in response:
                j = json.loads(r[0].text)

                try:

                    if 'likes' in j['response']:

                        with open('files/completed', 'a') as file:
                            file.write(str(owner_id) + '\n')

                        print('+', owner_id)
                        return

                except Exception as e:
                    print(e)
                    print(r[0].text)

                    if 'error' in j:

                        if j['error']['error_code'] == 14:
                            print("Решаем капчу")
                            captcha = Captcha()
                            captcha_result = captcha.solve(self.session, j['error']['captcha_img'])
                            captcha_sid = j['error']['captcha_sid']

                            if captcha_result == 'error':
                                self.interval = 2000
                                return
                            else:
                                captcha = True
                                print(self.name, 'Captcha', captcha_result)

                        if j['error']['error_code'] == 15:

                            with open('files/completed', 'a') as file:
                                file.write(str(owner_id) + '\n')

                            print('+', owner_id)
                            return

                        if j['error']['error_code'] == 17:
                            self.interval = 99999
                            return
Ejemplo n.º 3
0
 def verify_code(self):
     timestemp = time.time()
     imgurl = 'http://api.chaxun.la/api/seccode/?0.{0}'.format(timestemp)
     if self.download(imgurl):
         captcha = Captcha()
         code_result = captcha.verification(filename='captcha.gif')
         self.verify = code_result.get('Result')
Ejemplo n.º 4
0
class Solver(object):
    def __init__(self, network):
        self.ann = libfann.neural_net()
        self.ann.create_from_file("./networks/{}".format(network))
        self.cap_segmenter = Captcha()
        self.letters = "abcdefghklmnprstuvwyzABDEFGHIJKLMNRTUXY23456789"

    def solve_cap(self, captcha):
        self.cap_segmenter.update_cap(captcha)
        self.cap_segmenter.segment()
        segs = self.cap_segmenter.get_segments()
        answer = self.use_ann(segs)
        return answer

    def to_input(self, seg):
        input = []
        for x in range(seg.size[0]):
            for y in range(seg.size[1]):
                p = (x, y)
                col = seg.getpixel(p)
                norm = (((col / 255.00) * 2.00) - 1.00) * -1.00
                input.append(norm)
        return input

    def use_ann(self, segs):
        answer = ''
        for seg in segs:
            input = self.to_input(seg)
            output = self.ann.run(input)
            max = [0, -1]
            for x in range(len(output)):
                if output[x] > max[0]:
                    max = (output[x], x)
            answer += self.letters[max[1]]
        return answer
Ejemplo n.º 5
0
def login(url, parent=None, username=None, password=None):
    if (not password) or (not username):
        return None
    qDebug("in login")
    while True:
        session = _create_session()
        # qDebug("session")
        req = _get_login_page(session, url)
        # qDebug("page")
        captcha_id = re_search(r'img.src = \'captcha\?(.*)\'', req)
        # qDebug("captcha")
        if not captcha_id:
            qDebug('Captcha not found! Retrying...')
            sleep(3)
            continue
        captcha_id += get_timestamp()
        captcha_url = 'https://jaccount.sjtu.edu.cn/jaccount/captcha?' +\
                      captcha_id
        code = _bypass_captcha(parent, session, captcha_url)
        check = Captcha(parent)
        if not check.exec_():
            session.close()
            return None
        code = check.captchaInput.text()
        qDebug(code)
        sid = re_search(r'sid" value="(.*?)"', req)
        returl = re_search(r'returl" value="(.*?)"', req)
        se = re_search(r'se" value="(.*?)"', req)
        client = re_search(r'client" value="(.*?)"', req)
        uuid = re_search(r'captcha\?uuid=(.*?)&t=', req)
        if not (sid and returl and se and uuid):
            qDebug('Params not found! Retrying...')
            sleep(3)
            continue

        res = _login(session, sid, returl, se, client,
                     username, password, code, uuid)

        if res == 2:
            parent.LogInfo.emit('[MSG]Wrong captcha! Try again!\n')
            qDebug('Wrong captcha! Try again!')
            continue
        elif res == 1:
            parent.LogInfo.emit(
                '[MSG]Wrong username or password! Try again!\n'
                )
            qDebug('Wrong username or password! Try again!')
            break
        elif res == 3:
            parent.LogInfo.emit(
                '[MSG]Opps! You are banned for 30s...Waiting...\n'
                )
            qDebug('Opps! You are banned for 30s...Waiting...')
            sleep(30)
            continue
        else:
            return session
Ejemplo n.º 6
0
def captcha():
    c = Captcha()
    info = c.create_captcha()
    image = os.path.join(app.config['BASE_DIR'],'static/captcha/') + info['image_name']
    # 读取验证码
    with open(image,'rb') as f:
        image = f.read()
    # 获取验证码具体字母和数字
    session['captcha'] = info['captcha']
    return Response(image,mimetype='jpeg')
Ejemplo n.º 7
0
def captcha():
    from captcha import Captcha
    c = Captcha()
    info = c.create_captcha()
    image = os.path.join(os.path.dirname(__file__),
                         "static/captcha") + "/" + info["image_name"]
    with open(image, 'rb') as f:
        image = f.read()
    session['captcha'] = info["captcha"]
    # print(session['captcha'])
    return Response(image, mimetype="jpeg")
Ejemplo n.º 8
0
def captcha():
    from captcha import Captcha
    c = Captcha()
    info = c.create_captcha()
    image = os.path.join(os.path.dirname(__file__),
                         'static/captcha') + '/' + info['image_name']
    with open(image, 'rb') as f:
        image = f.read()
    # 进行会话session中值的保存
    session['captcha'] = info['captcha']
    # print(session['captcha'])
    return Response(image, mimetype='jpeg')
	def get(self):
		randomizer = Randomizer()
		pattern = randomizer.get_pattern()
		left = randomizer.get_number()
		operator = randomizer.get_operator()
		right = randomizer.get_number()
		self.captcha = Captcha(pattern, left, operator, right)
Ejemplo n.º 10
0
async def verify_captcha(request):

    try:

        data = await request.json()
        is_verified = verify_user_captcha(data.get('widget_id'),
                                          data.get('input'))

        if not is_verified:

            captcha = Captcha()

            response = JSONResponse({
                'is_verified': is_verified,
                'widget_id': captcha.widget_id,
                'captcha_b64': captcha.b64_string
            })

        else:

            response = JSONResponse({'is_verified': is_verified})

        return response

    except Exception:
        response = Response('Error verifying captcha',
                            status_code=500,
                            media_type='text/plain')
        return response
Ejemplo n.º 11
0
    def __init__(self):
        self.POST_DATA = {}

        self.session = requests.Session()
        home_response = self.session.get(HOME_URL)

        dom = BeautifulSoup(home_response.content, "html.parser")

        inputs = dom.find_all('input')

        for input in inputs:
            if 'value' in input.attrs:
                self.POST_DATA[input.attrs['name']] = input.attrs['value']
            else:
                self.POST_DATA[input.attrs['name']] = None

        self.captcha_url = dom.find(id="imgcap").attrs['src']

        captcha_response = self.session.get(ROOT_URL + self.captcha_url)
        captcha_file = BytesIO()
        captcha_file.write(captcha_response.content)

        code = Captcha(captcha_file).crack()

        self.POST_DATA['txtCaptcha'] = code
class CaptchaController:
	def get(self):
		randomizer = Randomizer()
		pattern = randomizer.get_pattern()
		left = randomizer.get_number()
		operator = randomizer.get_operator()
		right = randomizer.get_number()
		self.captcha = Captcha(pattern, left, operator, right)

	def to_json(self):
		self.get()
		left = self.captcha.get_left()
		operator = self.captcha.get_operator()
		right = self.captcha.get_right()
		json = '{"left":"%s", "operator":"%s", "right":"%s"}'  % (left, operator, right)
		return json
Ejemplo n.º 13
0
 def __init__(self):
     self.token = "Jh2044695"
     self.db = self.__gen_db("./middle.db")
     self.baseRange = 10
     self.target = 5
     self.sms = SmsHelper()
     self.captcha = Captcha()
Ejemplo n.º 14
0
def show_captcha(url):
    """
    Muetra una imagen con el captcha y devuelve el texto escrito por el usuario
    :param url:
    :return:
    """
    from captcha import Captcha
    skin = 'Estuary' if xbmc.getSkinDir() == 'skin.estuary' else 'Default'
    return Captcha("Captcha.xml", sysinfo.runtime_path, skin).start(url)
Ejemplo n.º 15
0
    def __init__(self, account, password):
        # post paramenters
        self.account = account
        self.password = password

        #request header
        self.connect = ConnectHttp()
        self.headers = self.connect.headers
        self.captcha = Captcha(self.connect)
Ejemplo n.º 16
0
    def __init__(self, card_id, user_list, callback, i):
        threading.Thread.__init__(self)

        self.url_get = 'http://hao.17173.com/gift-captcha.html?refresh=1&gift_id=%d&_=%d'
        self.url_img = 'http://hao.17173.com%s'
        self.url_submit = 'http://hao.17173.com/gift-qiang-%d.html'
        self.card_id = card_id
        self.user_list = user_list
        self.callback = callback

        self.captcha = Captcha()
        self.i = i

        webCookie = http.cookiejar.CookieJar()
        cookie_handler = urllib.request.HTTPCookieProcessor(webCookie)
        self.openner = urllib.request.build_opener(cookie_handler)
        #proxy_handler = urllib.request.ProxyHandler({'http': 'child-prc.intel.com:913'})
        #self.openner = urllib.request.build_opener(cookie_handler, proxy_handler)

        self.thread_stop = False
Ejemplo n.º 17
0
def gen_helper(arg):
    global font_path
    global bg_path
    global o_dir
    global captcha_size
    char, char_idx = arg

    rotate = random.randint(-15, 15)
    font_size = random.randint(700, 800)
    bg_offset = (random.randint(0, 400), random.randint(0, 1000))

    c = Captcha(font_path=font_path,
                bg_path=bg_path,
                rotate=rotate,
                font_size=font_size,
                bg_offset=bg_offset)

    o_fname = os.path.join(
        o_dir, "{0}_{1}-{2}".format(char, str(bg_offset), char_idx))
    c.generate(char, o_fname=o_fname, captcha_size=captcha_size)
Ejemplo n.º 18
0
def captcha(request):
    request.session['verified'] = False
    if 'g-recaptcha-response' in request.POST:
        ip = request.remote_addr
        verify = Captcha.query(request.POST['g-recaptcha-response'], ip)
        if verify:
            request.session['verified'] = True
            request.session['key'] = request.matchdict['url']
            return HTTPFound(location='/getkey')

    return {}
Ejemplo n.º 19
0
def test_post_verify_captcha():

    client = TestClient(app)
    captcha = Captcha()
    response = client.post('/verify-captcha/',
                           headers={'Content-Type': 'application/json'},
                           json={
                               'widget_id': captcha.widget_id,
                               'input': ''.join(captcha.characters)
                           })

    assert response.status_code == 200
Ejemplo n.º 20
0
class TestCaptcha(TestCase):
    def setUp(self):
        self.c = Captcha()

    def test_solver_all_equal(self):
        result = self.c.solve('1111')
        self.assertEqual(4, result)

    def test_solver_all_different(self):
        result = self.c.solve('1234')
        self.assertEqual(0, result)

    def test_solver_simple_sums(self):
        result = self.c.solve('1122')
        self.assertEqual(3, result)

    def test_loop_sum(self):
        result = self.c.solve('91212129')
        self.assertEqual(9, result)

    def test_multiple_sums(self):
        result = self.c.solve('911229')
        self.assertEqual(12, result)

    def test_empty_input(self):
        result = self.c.solve('')
        self.assertEqual(0, result)
Ejemplo n.º 21
0
async def new_member_handler(message: types.Message):
    num = str(random.choices(range(1000, 9999))[0])
    filename = f'{uuid.uuid4()}.png'
    Captcha(filename, num).create()
    with open(filename, 'rb') as captcha:
        await bot.send_photo(message.chat.id, captcha, caption=Template.CAPTCHA.format(f'@{message["from"].username}'))
    os.remove(filename)
    redis_key = f'{message.chat.id}_{message["from"].id}'
    redis_data = json.dumps({
        "answer": num,
        "kick_time": (datetime.datetime.utcnow() + datetime.timedelta(minutes=KICK_TIME_MINUTE)).strftime(FORMAT_TIME),
        "username": message['from'].username
    })
    await redis_dispatcher.append_quque_user(redis_key, redis_data)
Ejemplo n.º 22
0
async def get_captcha(request):

    try:

        captcha = Captcha()
        data = {
            'widget_id': captcha.widget_id,
            'captcha_b64': captcha.b64_string
        }

        return JSONResponse(data)

    except Exception:
        response = Response('Error generating captcha',
                            status_code=500,
                            media_type='text/plain')
        return response
Ejemplo n.º 23
0
def captcha_page(session, referer, pname):
    """Takes a Session and long_id and retrieves a captcha.png file to be
    processed. Returning the cracked code for its caller."""
    captcha_url = 'http://buscatextual.cnpq.br/buscatextual/servlet/captcha?'\
                  'metodo=getImagemCaptcha'
    headers = {}
    headers['Accept'] = 'image/png,image/*;q=0.8,*/*;q=0.5'
    headers['Accept-Encoding'] = 'gzip, deflate'
    headers['Accept-Language'] = 'en-US,en;q=0.5'
    headers['Connection'] = 'keep-alive'
    headers['DNT'] = '1'
    headers['Host'] = 'buscatextual.cnpq.br'
    headers['Referer'] = referer
    img_name = 'captcha_' + current_process().name + '.png'
    while True:
        try:
            logging.info('%s-captcha_page: Getting captcha page.', pname)
            headers['User-Agent'] = USER_AGENT.random
            req = session.get(captcha_url, headers=headers)
        except requests.exceptions.Timeout as terror:
            logging.info('%s-captcha_page: Timeout: %s\nTrying again...',
                         pname, terror)
            continue
        except requests.exceptions.ConnectionError as cerror:
            logging.info(
                '%s-captcha_page: Connection Error: %s\nTrying '
                'again...', pname, cerror)
            continue
        except requests.exceptions.RequestException as rerror:
            logging.info(
                '%s-captcha_page: Request Error: %s\nTrying '
                'again...', pname, rerror)
            continue
        if req.status_code != 200:
            continue
        try:
            open(img_name, 'wb').write(req.content)
            code = Captcha(img_name).get_text().upper()
            if len(code) == 4:
                logging.info('%s-captcha_page: Right captcha length: %s',
                             pname, code)
                return code
        except Exception, ioerror:
            logging.info('%s-captcha_page: %s', pname, ioerror)
            continue
Ejemplo n.º 24
0
Archivo: card.py Proyecto: bymars/ika
    def __init__(self, card_id, user_list, callback, i):
        threading.Thread.__init__(self)
        
        self.url_get = 'http://hao.17173.com/gift-captcha.html?refresh=1&gift_id=%d&_=%d'
        self.url_img = 'http://hao.17173.com%s'
        self.url_submit = 'http://hao.17173.com/gift-qiang-%d.html'
        self.card_id = card_id
        self.user_list = user_list
        self.callback = callback
        
        self.captcha = Captcha()
        self.i = i

        webCookie = http.cookiejar.CookieJar()
        cookie_handler = urllib.request.HTTPCookieProcessor(webCookie)
        self.openner = urllib.request.build_opener(cookie_handler)
        #proxy_handler = urllib.request.ProxyHandler({'http': 'child-prc.intel.com:913'})
        #self.openner = urllib.request.build_opener(cookie_handler, proxy_handler)

        self.thread_stop = False 
Ejemplo n.º 25
0
	def logout_bras(self):
                #request = urllib2.Request('http://p.nju.edu.cn/portal.do?action=logout')
		#urllib2.urlopen(request)
		#print 'logout p.nju'
		
		posturl = 'http://bras.nju.edu.cn/selfservice/auth.html'
		cj = cookielib.LWPCookieJar() 
		cookie_support = urllib2.HTTPCookieProcessor(cj) 
		opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) 
		urllib2.install_opener(opener) 
		urllib2.urlopen(posturl)
		
                req_img = urllib2.Request('http://bras.nju.edu.cn/selfservice/img.html?0.0826044527348131')
		res_img = urllib2.urlopen(req_img)
		img = res_img.read()
		f = open('code2.jpg', 'wb')
		f.write(img)
		f.close()
		code = Captcha.Recognize('code2.jpg')
		
		headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1','Referer' : '******'} 
		postData = {'login_username' : self.username,'action':'login','login_password' : self.password,'code':code}
		postData = urllib.urlencode(postData) 
		request = urllib2.Request(posturl, postData, headers) 
		response = urllib2.urlopen(request)

		url = 'http://bras.nju.edu.cn/selfservice/?action=online'
		request = urllib2.Request(url) 
		response = urllib2.urlopen(request)
		text = response.read()
                content = text.decode('UTF-8')
                
		# 取退出必须的id
		logout_id = self.get_logoutid(content)
		url = 'http://bras.nju.edu.cn/selfservice/?action=disconnect&id='+str(logout_id)
                request = urllib2.Request(url) 
		response = urllib2.urlopen(request)
		text = response.read()
		content = text.decode('UTF-8')
		if content.find('下线成功')>-1:
                        print 'logout bras success'
Ejemplo n.º 26
0
	def login_pnju(self):
		posturl = 'http://p.nju.edu.cn/portal.do'
		cj = cookielib.LWPCookieJar() 
		cookie_support = urllib2.HTTPCookieProcessor(cj) 
		opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) 
		urllib2.install_opener(opener) 
		result = urllib2.urlopen(posturl)
		text = result.read()
		code = '0'
		# 读取验证码
		try:
                        req_img = urllib2.Request('http://p.nju.edu.cn/img.html')
                        res_img = urllib2.urlopen(req_img)
                        img = res_img.read()
                        f = open('code.jpg', 'wb')
                        f.write(img)
                        f.close()
                        # 验证码识别
                        code = Captcha.Recognize('code.jpg')
                        print 'code='+code
		except:
                        pass
		
		# submit login
                posturl = 'http://p.nju.edu.cn/portal.do?action=login&url=http%3A%2F%2Fp.nju.edu.cn&p_login=p_login&username='******'&password='******'&code='+code+'&x=48&y=13'
                request = urllib2.Request(posturl)
                #print 'login...code:' + code
                response = urllib2.urlopen(request) 		
                text = response.read()
                content = text.decode('utf8')
                # 判断是否登录成功
                if content.find('验证码错误')>-1:
                        print 'captcha error'
                else:
                        print 'login p.nju success'
                request = urllib2.Request('http://p.nju.edu.cn/portal.do')
		response = urllib2.urlopen(request)
Ejemplo n.º 27
0
def captcha_show(request, name):
    key = 'captcha_%s' % name

    if not request.session.get(key, False):
        c = Captcha()
        request.session[key] = c.text
    else:
        c = Captcha(text=request.session.get(key))

    fp_captcha = cStringIO.StringIO()
    c.generate()
    c.save(fp_captcha)
    fp_captcha.seek(0)

    res = HttpResponse(status=httplib.OK)
    res['Content-Type'] = 'image/jpg'
    res.write(fp_captcha.read())

    return res
Ejemplo n.º 28
0
 def test_left_operand_should_be_9(self):
     captcha = Captcha(SECOND_PATTERN, 9, DUMMY_OPERATOR, DUMMY_RIGHT)
     self.assertEqual("9", captcha.left_operand())
Ejemplo n.º 29
0
 def test_string_should_be_one_plus_9(self):
     captcha = Captcha(1, 1, 1, 9)
     self.assertEqual("one + 9", captcha.string())
Ejemplo n.º 30
0
 def test_right_operand_should_be_nine(self):
     captcha = Captcha(SECOND_PATTERN, DUMMY_LEFT, DUMMY_OPERATOR, 9)
     self.assertEqual("nine", captcha.right_operand())
Ejemplo n.º 31
0
def main():

    argparser = argparse.ArgumentParser()
    argparser.add_argument('--type', action="store", dest="type")
    argparser.add_argument('-n', action="store", dest="n", type=int)
    argparser.add_argument('--width', action="store", dest="width", type=int)
    argparser.add_argument('--height', action="store", dest="height", type=int)
    argparser.add_argument('--fontsize', action="store", dest="fontsize", type=int)
    argparser.add_argument('-l', action="store", dest="length", type=int)
    options = argparser.parse_args()

    if options.type == None and options.n == None and options.width == None and options.height == None and options.fontsize == None and options.length == None:
        print "No params given, i will use settings.ini"

        props = Properties("settings.ini")
        props.load()
        count = props.getNumber()

        rand_word = RandomWord()
        rand_str = RandomString(int(props.getWordLength()))
        word_type = props.getWordType()

        if word_type == "natural":
            i = 0
            while (i < int(count)):
                i = i+1
                print (rand_word.getFixedLengthWord(int(props.getWordLength())))
                captcha=Captcha(rand_word.getFixedLengthWord(int(props.getWordLength())), int(props.getFontSize()), int(props.getImageWidth()), int(props.getImageHeight()))
                captcha.saveImage()

        elif word_type == "random":
            i = 0
            while (i < int(count)):
                i = i+1
                print (rand_str.shuffle(int(props.getWordLength())))
                captcha=Captcha(rand_str.shuffle(int(props.getWordLength())), int(props.getFontSize()), int(props.getImageWidth()), int(props.getImageHeight()))
                captcha.saveImage()

        else :
            print ("word type must be random or natural")

        print ("Done, generated "+props.getNumber()+" captchas")

    #TODO: сделать возможность часть параматров брать из settings.ini а часть из консоли
    else:

        rand_word = RandomWord()
        rand_str = RandomString(options.length)
        word_type = options.type

        if word_type == "natural":
            i = 0
            while (i < int(count)):
                i = i+1
                print (rand_word.getFixedLengthWord(options.length))
                captcha=Captcha(rand_word.getFixedLengthWord(options.length, options.fontsize, options.width, options.height))
                captcha.saveImage()

        elif word_type == "random":
            i = 0
            while (i < int(count)):
                i = i+1
                print (rand_str.shuffle(options.length))
                captcha=Captcha(rand_str.shuffle(options.length, options.fontsize, options.width, options.height))
                captcha.saveImage()

        else :
            print ("word type must be random or natural")

        print ("Done, generated "+props.getNumber()+" captchas")        
Ejemplo n.º 32
0
 def test_left_operand_should_be_nine(self):
     captcha = Captcha(FIRST_PATTERN, 9, DUMMY_OPERATOR, DUMMY_RIGHT)
     self.assertEqual("nine", captcha.left_operand())
Ejemplo n.º 33
0
 def test_2_should_be_two(self):
     captcha = Captcha(self.secondPattern, self.dummyLeftOperand,
                       self.dummyOperator, 2)
     self.assertEqual('two', captcha.rightOperand.toString())
Ejemplo n.º 34
0
 def test_4_should_be_three(self):
     captcha = Captcha(self.secondPattern, 4, self.dummyOperator,
                       self.dummyRightOperand)
     self.assertEqual('four', captcha.leftOperand.toString())
Ejemplo n.º 35
0
 def test_get_json(self):
     captcha = Captcha(1, 1, 1, 1)
     output = Output(captcha)
     self.assertEqual('{"operator": "+", "right": "one", "left": "1"}',
                      output.json())
Ejemplo n.º 36
0
 def test_2_should_be_multiply(self):
     captcha = Captcha(self.dummyPattern, self.dummyLeftOperand, 2,
                       self.dummyRightOperand)
     self.assertEqual('*', captcha.operator.toString())
Ejemplo n.º 37
0
 def __init__(self):
     self.c = Captcha()
     self.c.loadData("./iconset/")
     self.is_login = False
Ejemplo n.º 38
0
 def test_string_should_be_9_plus_one(self):
     captcha = Captcha(2, 9, 1, 1)
     self.assertEqual("9 + one", captcha.string())
Ejemplo n.º 39
0
class LoginSpider(CrawlSpider):
    name = 'login'
    allowed_domains = [Settings().get('HOMELINK_DOMAIN')]
    start_urls = [Settings().get('HOMELINK_LOGIN_URL')]

    rules = [
        Rule(SgmlLinkExtractor(), follow=True)
    ]

    def __init__(self):
        self.c = Captcha()
        self.c.loadData("./iconset/")
        self.is_login = False

    def parse(self, response):
        if self.is_login:
            return Request(Settings().get('HOMELINK_START_URL'), callback=self.parse_item)
        else:
            return self.login()

    def login(self):
        rid = (str)(random.random())
        url = "http://beijing.homelink.com.cn/validreg.php?" + rid
        urllib.urlretrieve(url, "/tmp/" + rid + ".jpg")

        validateCode = self.c.crack("/tmp/" + rid + ".jpg")
        yield FormRequest(url="http://beijing.homelink.com.cn/webregister/login.php?"+(str)(random.random()),
                    formdata={'username': Settings().get('HOMELINK_USERNAME'), 
                              'password': Settings().get('HOMELINK_PASSWORD'),
                              'validateCode': validateCode, 
                              'remember': '1', 
                              'dologin': '******'}, 
                    callback=self.after_login)

    def after_login(self, response):
        # check login succeed before going on
        if response.status == 200 and response.url == "http://beijing.homelink.com.cn/center/":
            self.is_login = True
            return Request(Settings().get('HOMELINK_START_URL'), callback=self.parse_item)
        else:
            print "login Failed, try again. ", response.status, response.url
            return self.login()
    
    def parse_item(self, response):
        filename = response.url.split("/")[-2]
        sel = Selector(response)
        houses = sel.xpath('//div[@id="listData"]//div[@class="public indetail"]')
        for house in houses:
            item = HomelinkItem()
            #style = house.xpath('@style').extract()[0]
            item['hid'] = house.xpath('h3//a/@href').re(u'/sold/(.*).shtml')[0]
            title = ("".join(house.xpath('h3//text()').extract())).split(' ')
            item['address'] = " ".join(title[0:2])
            item['house_style'] = title[2]
            item['room_number'] = int(filter(lambda x:x.isdigit(),title[2]))
            item['area'] = int(filter(lambda x:x.isdigit(),title[3]))
            item['date'] = house.xpath('div[@class="price"]/ul/text()').extract()[0]
            item['price'] = "".join(house.xpath('div[@class="priceo"]/ul/span/text()').extract() + house.xpath('div[@class="priceo"]/ul/label/text()').extract())
            if item['price']:
                item['price'] = int(filter(lambda x:x.isdigit(), item['price'])) 
            item['unit_price'] = "".join(house.xpath('div[@class="priceoo"]/ul/span/text()').extract() + house.xpath('div[@class="priceoo"]/ul/label/text()').extract())
            if item['unit_price']:
                item['unit_price'] = int(filter(lambda x:x.isdigit(), item['unit_price'])) 
            item['rise_rate'] = house.xpath('div[@class="priceooo"]/ul/text()').extract()[0]
            item['desc'] = "".join(house.xpath('div[@class="content"]/p[@class="clearfix"]/text()').extract())
            item['contact'] = house.xpath('div[@class="content"]/p[@class="clearfix"]/a/@href').extract()[0]
            item['tag'] = ",".join(house.xpath('div[@class="content"]/ol/label/text()').extract())
            yield item
            #print hid, title, date, price, unit_price, rise_rate, desc, contact, tag
            
        for url in sel.xpath('//div[@class="fanye"]/ul/a/@href').extract():
            yield Request(Settings().get('HOMELINK_URL_PREFIX') + url, callback=self.parse_item)
Ejemplo n.º 40
0
class QQLogin(object):

    '''login parameters'''
    params = {}

    connect = None

    def __init__(self, account, password):
        # post paramenters
        self.account = account
        self.password = password

        #request header
        self.connect = ConnectHttp()
        self.headers = self.connect.headers
        self.captcha = Captcha(self.connect)
        

    def login(self):
        self._initPage()

        loginStatus = self._login()
        if loginStatus[0] == '0' and loginStatus[1] == '0':
            self._login2()
        elif loginStatus[0] == '4' and loginStatus[1] == '3':
            # 验证码
            self._initPage()
            loginStatus = self._login()
        return self
 

    def _initPage(self):
        params = {'target':'self',
                'style':5,
                'miao_css':'m_webqq',
                'appid':1003903,
                'enable_qlogin':0,
                'no_verifyimg':1,
                's_url':'http://w.qq.com//loginproxy.html',
                'f_url':'loginerroralert',
                'strong_login':1,
                'login_state':10,
                't':'20120221001'}
        req = urllib2.Request('http://ui.ptlogin2.qq.com/cgi-bin/login?'+urllib.urlencode(params),None, self.headers)
        req.get_method = lambda: 'GET'
        operate = self.connect.open_url(req)
        inputs = InputLister()
        inputs.feed(''.join(operate.readlines()))
        logging.debug(inputs.items)
        self.params = inputs.items
        pass

    def _login(self):
        self.params.update({'u':self.account})
        #md5(md5_3(P.p.value) + K)
        if self.params.has_key('verifycode'):
            self.params.update( { 'p': qmd5.qqmd5(self.password, self.params['verifycode']) })
        else:
            vc = self.captcha.getVerifyCode(self.account)
            if vc[0] == '0':
                self.params.update({ 'verifycode':vc[1] }) 
                self.params.update({ 'p': qmd5.qqmd5(self.password, vc[1]) })
            elif vc[0] == '1':
                #当首次访问显示验证码地时候
                vcode = self.captcha.getImgVerifyCode(self.account)
                self.params.update({ 'verifycode':vcode }) 
                self.params.update({ 'p': qmd5.qqmd5(self.password, vcode) })
                pass
        import random
        qqActionLog = '%d-%d-%d' % (random.randint(2,9), random.randint(3,7), random.randint(2731,374463))
        self.params.update({'action': qqActionLog}) 
        self.params.update({'dumy':''}) 
        logging.debug(self.params)

        queryString = urllib.urlencode(self.params)
        logging.debug(queryString)

        req = urllib2.Request('http://ptlogin2.qq.com/login?'+queryString, None, self.headers);
        req.get_method = lambda: 'GET'
        operate = self.connect.open_url(req)
        exec_rt = ''.join(operate.readlines()).decode("utf-8").encode("utf-8")
        #ptuiCB('0','0','http://w.qq.com//loginproxy.html','0','登录成功!')
        logging.info(exec_rt)
        return eval('self._'+exec_rt.replace(';',''))

    def _ptuiCB(self, signal1, signal2, url, signal3, msg):
        return signal1,signal2,signal3

    def _login2(self):
        cookie = self.connect.getCookie('ptwebqq')
        logging.debug("ptwebqq: "+cookie)
        r='{"status":"online", "ptwebqq":"%s", "passwd_sig":"", "clientid":"17239126", "psessionid":null}' % cookie
        params = {'r':r,
                'clientid':17239126,
                }
        req = urllib2.Request('http://d.web2.qq.com/channel/login2',
                urllib.urlencode(params)+"&psessionid=null",
                self.headers)
        operate = self.connect.open_url(req)
        logging.debug(operate)
        resp = eval(''.join(operate))
        if resp['retcode'] == 0:
            self.connect.ticket.update(resp['result'])
            return 0
        else:
            return -1
Ejemplo n.º 41
0
class Sitedossier(object):
    """docstring for Sitedossier"""
    def __init__(self, domain):
        super(Sitedossier, self).__init__()
        self.domain = domain
        self.captcha = Captcha()
        self.subset = []

    def run(self):
        try:
            url = 'http://www.sitedossier.com/parentdomain/{0}'.format(self.domain)
            r = self.get_content(url)
            self.parser(r)
            return list(set(self.subset))
        except Exception as e:
            return self.subset

    def get_content(self, url):
        r = http_request_get(url).text
        if self.human_act(r) is True:
            return r
        else:
            self.get_content(url)
            
    def parser(self, response):
        npage = re.search('<a href="/parentdomain/(.*?)"><b>Show', response)
        if npage:
            for sub in self.get_subdomain(response):
                self.subset.append(sub)
            nurl = 'http://www.sitedossier.com/parentdomain/{0}'.format(npage.group(1))
            response = self.get_content(nurl)
            self.parser(response)
        else:
            for sub in self.get_subdomain(response):
                self.subset.append(sub)

    def get_subdomain(self, response):
        domain = re.compile(r'(?<=<a href\=\"/site/).*?(?=\">)')
        for sub in domain.findall(response):
            yield sub

    def human_act(self, response):
        if 'auditimage' in response or 'blacklisted' in response:
            imgurl = self.get_audit_img(response)
            if imgurl is not None:
                ret = self.captcha.verification(imgurl)
                if ret.has_key('Result'):
                    self.audit(ret['Result'])
                    return True
                else:
                    raise Exception("captcha_verification_is_empty")
            else:
                raise Exception("audit_img_is_empty")
        else:
            return True

    def audit(self, code):
        payload = {'w':code}
        url = 'http://www.sitedossier.com/audit'
        r = http_request_post(url, payload=payload)

    def get_audit_img(self, response):
        auditimg = re.compile(r'(?<=<img src\=\"/auditimage/).*?(?=\?" alt="Please)')
        imgurl = auditimg.findall(response)[0:]
        if len(imgurl) >= 1:
            imgurl = 'http://www.sitedossier.com/auditimage/{0}'.format(imgurl[0])
            return imgurl
        else:
            return None

    def __str__(self):
        handler = lambda e: str(e)
        return json.dumps(self, indent=2, default=handler)
Ejemplo n.º 42
0
 def test_2_should_be_2(self):
     captcha = Captcha(self.firstPattern, 2, self.dummyOperator,
                       self.dummyRightOperand)
     self.assertEqual('2', captcha.leftOperand.toString())
Ejemplo n.º 43
0
Archivo: card.py Proyecto: bymars/ika
class Card(threading.Thread):
    def __init__(self, card_id, user_list, callback, i):
        threading.Thread.__init__(self)
        
        self.url_get = 'http://hao.17173.com/gift-captcha.html?refresh=1&gift_id=%d&_=%d'
        self.url_img = 'http://hao.17173.com%s'
        self.url_submit = 'http://hao.17173.com/gift-qiang-%d.html'
        self.card_id = card_id
        self.user_list = user_list
        self.callback = callback
        
        self.captcha = Captcha()
        self.i = i

        webCookie = http.cookiejar.CookieJar()
        cookie_handler = urllib.request.HTTPCookieProcessor(webCookie)
        self.openner = urllib.request.build_opener(cookie_handler)
        #proxy_handler = urllib.request.ProxyHandler({'http': 'child-prc.intel.com:913'})
        #self.openner = urllib.request.build_opener(cookie_handler, proxy_handler)

        self.thread_stop = False 

    def run(self):
        for index, user in enumerate(self.user_list):
            lock.acquire()
            if user['state'] > 0:
                lock.release()
                continue
            else:
                user['state'] = 1
                lock.release()
            user['state'] = 1
            self.callback(index)
            self.login(user['username'], user['password'])
            user['state'] = 2
            self.callback(index)
            retry = 0
            while not user['card_no'] and retry < 3:
                img_url = self.get_captches()
                result = self.identify_captchas(img_url)
                user['card_no'] = self.submit_captchas(result)
                retry += 1
            user['state'] = 3
            self.callback(index)
        
    def stop(self):
        self.thread_stop = True
        
    def login(self, username, password):
        print('\tlogin: %s ---- %s' % (username, password))

    def get_captches(self):
        time_stamp = int(time.time())
        response = self.openner.open(self.url_get % (self.card_id, time_stamp))
        data = response.read().decode()
        json_obj = json.loads(data)
        img_url = 'http://hao.17173.com' + json_obj["url"]
        print("\tget_captchas: img: %s" % img_url)
        return img_url
        
    def identify_captchas(self, img_url):
        response = self.openner.open(img_url)
        image_bytes = response.read()
        result = self.captcha.recognize(image_bytes)
        return result
    
    def submit_captchas(self, captcha):
        values = {'verifyCode':captcha['Result']}
        url_values=urllib.parse.urlencode(values).encode(encoding='UTF8')
        response = self.openner.open(self.url_submit % (self.card_id), url_values)
        data = response.read().decode()
        json_obj = json.loads(data)
        if int(json_obj['flag']) == 1:
            return json_obj['cardInfo']['card_number']
        else:
            self.captcha.reporterror(captcha['Id'])
            return ''
Ejemplo n.º 44
0
 def test_1_should_be_one(self):
     captcha = Captcha(self.secondPattern, self.dummyLeftOperand,
                       self.dummyOperator, 1)
     self.assertEqual('one', captcha.rightOperand.toString())
Ejemplo n.º 45
0
  def CPF(self,cpf=''):

    if cpf == '':
      cpf  = str(raw_input('[?] CPF: ')).strip('.').strip(' ').strip('/').strip('-')
      print('\n')
      self.api=False
    else:
      self.api=True

    ecount=0
    while True:
      session = Browser()
      url = 'http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublica.asp'
      url2 = 'http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/ConsultaPublicaExibir.asp'

      if not self.api:
        print('[*] Connecting1...')

      response =  session.get_response(url)

      element = session.get_bs(response.content)

      if not self.api:
        print(element.find('input',{'id':'viewstate'}))

      #reloadImagemCaptcha();

      image_url = 'http://www.receita.fazenda.gov.br/aplicacoes/atcta/cpf/captcha/' + element.find('img',{'id':'imgCaptcha'})['src'].split("/")[-1]
      #image["src"].split("/")[-1]
      #urlretrieve(image_url, outpath)

      #viewstate = 'http://www.receita.fazenda.gov.br' + element.find('input',{'id':'viewstate'})['value']

      if not self.api:
        print(image_url)

      captchac = Captcha()

      imgfile = session.download(image_url,'rcaptcha.jpg')
      try:
        captcha = captchac.decode(imgfile, 30)
        print('[*] AAAAAAAAAAAAAAAAAAAAAAAAAAAA')

      except Exception,e:
        if not self.api:
          print('[!] Unrecoverable error in captcha system: %s' % str(e))
          time.sleep(2)
        raise Exception('[!] Unrecoverable error in captcha system: %s' % str(e))

      if captcha:
        if not self.api:
          print("[*] Captcha cracked: " + captcha["text"] + '\n')
      try:

        dados = {'txtCpf':cpf,'captcha': captcha["text"]}#,'viewstate':viewstate}
        response = session.post_response(url2, dados)

        if u'Os caracteres da imagem não foram preenchidos corretamente' in response.content.decode("iso-8859-1", "replace"):
          raise Exception('Wrong captcha')
        element = session.get_bs(response.content)
        data = element.findAll('span',{'class':'clConteudoDados'})
        rcpf = str(data[0]).split(':')[1].split('<')[0].strip()
        rnome = str(data[1]).split(':')[1].split('<')[0].strip()
        rsituacao = str(data[2]).split(':')[1].split('<')[0].strip()
        rdv = str(data[3]).split(':')[1].split('<')[0].strip()
        if not self.api:
          print('[+] CPF: %s' % rcpf)
          print('[+] Nome: %s' % rnome)
          print('[+] Situacao cadastral: %s' % rsituacao)
          print('[+] Digito verificador: %s' % rdv)
          raw_input()
        else:
          rdict = {'CPF': rcpf, 'Nome': rnome, 'Situacao cadastral': rsituacao, 'Digito Verificador': rdv}
          return rdict
        break

      except Exception as e:
        if e == 'Wrong captcha':
          captchac.report(captcha["captcha"])
        if ecount == 3:
          if not self.api:
            print("[!] Max attempts reached, giving up (maybe the CPF was incorrect?) ...")
          raise Exception("[!] Max attempts reached, giving up (maybe the CPF was incorrect?) ...")
          break
        else:
          ecount+=1
          if not self.api:
            print('\n[!] Error: %s\n[*] Trying again... (%d/3)\n' % (str(e), ecount))
Ejemplo n.º 46
0
 def test_1_should_be_plus(self):
     captcha = Captcha(self.dummyPattern, self.dummyLeftOperand, 1,
                       self.dummyRightOperand)
     self.assertEqual('+', captcha.operator.toString())
Ejemplo n.º 47
0
 def test_right_operand_should_be_9(self):
     captcha = Captcha(FIRST_PATTERN, DUMMY_LEFT, DUMMY_OPERATOR, 9)
     self.assertEqual("9", captcha.right_operand())
Ejemplo n.º 48
0
 def test_3_should_be_minus(self):
     captcha = Captcha(self.dummyPattern, self.dummyLeftOperand, 3,
                       self.dummyRightOperand)
     self.assertEqual('-', captcha.operator.toString())
Ejemplo n.º 49
0
    WARNING = 'WARNING'
    ERROR = 'ERROR'
    CRITICAL = 'CRITICAL'
  def _log(lvl, msg):
    if lvl != 'WARNING':
      print '[{}] {}'.format(lvl, msg)

  def get_info(target, cookie=''):
    result = list(target._get_captcha(cookie)[1:])
    result.append(cookie)
    return result

  config = {'log': _log, 'logger': DummyLogger, 'fontdir': 'fonts', 'tiles_path': 'tiles'}

  start_time = time.time()
  testme = Captcha(**config)
  for xxx in range(100):
    cookiex = '' if xxx % 2 else str(time.time())
    data = get_info(testme, cookiex)
    if xxx % 2:
      data[0] += time.time()
      assert not testme.captcha_verify(*data), 'Error captcha_verify 1'
    else:
      assert testme.captcha_verify(*data), 'Error captcha_verify 2'
    assert not testme.captcha_verify(*data), 'Error captcha_verify - check_whitelist 3'
  print 'Origin captcha tests ok: ', time.time() - start_time

  start_time = time.time()
  config['diff_mode'] = 2
  testme = Captcha(**config)
  for xxx in range(100):
Ejemplo n.º 50
0
 def __init__(self, domain):
     super(Sitedossier, self).__init__()
     self.domain = domain
     self.captcha = Captcha()
     self.subset = []
Ejemplo n.º 51
0
def when_i_want_get_left_operand(step):
    captcha = Captcha(world.pattern, world.left, world.operator, world.right)
    world.actual = captcha.left_operand()