zoukankan      html  css  js  c++  java
  • 91家纺网,登录代码

    import re
    import os
    import base64
    #import ast
    from urllib import parse
    from datetime import datetime
    import cv2

    import random 
    import requests
    import time
    import redis
    from scrapy import Selector

    from selenium import webdriver
    from selenium.webdriver import ActionChains
    from PIL import Image

    domain = "http://www.91jf.com/"
    domain_log = "http://www.91jf.com/default.php?url=member&act=memberinfo"
    #IMAGE_URL = "http://www.91jf.com/default.php?act=code"

    chrome_options = webdriver.ChromeOptions()
    path = r'D:project_91jiafangwanchromedriver.exe'
    browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)


    def get_captcha(filename):
        """
        访问验证码解析API,解析图片验证码
        :param filename:
        :return:
        """
        CAPTCHA_PATH = 'http://192.168.3.9:8888/captcha'
        with open(filename, "rb") as f:
            image_base64 = base64.b64encode(f.read())
        payload = {'image': image_base64}
        while True:
            response = requests.request("POST", CAPTCHA_PATH, data=payload)
            if response.status_code == 200:
                if response.json().get('code') == 200:
                    return response.json().get('text')
                else:
                    print(response.json().get('err'))
                    return '1234'
            else:
                print('验证码网络无法访问,请确认网络情况')
                time.sleep(10)

    def log_in():
        browser.get(domain_log)
        browser.maximize_window()

        slider = browser.find_element_by_xpath("//img[@onclick='show_user_login()']")
        ActionChains(browser).click(slider).perform()
        ActionChains(browser).release().perform()

        #IMAGE_URL = "http://www.91jf.com/default.php?act=code"
        # 截取当前网页并放到D盘下命名为printscreen,该网页有我们需要的验证码
        browser.save_screenshot('./image/printscreen.png') 
        img_ele = browser.find_element_by_xpath("//img[@src='default.php?act=code']")
        location = img_ele.location  # 获取验证码x,y轴坐标
        size = img_ele.size  # 获取验证码的长宽
        rangle = (int(location['x']), int(location['y']), int(location['x'] + size['width']),
              int(location['y'] + size['height']))  # 写成我们需要截取的位置坐标
        i = Image.open("./image/printscreen.png")  # 打开截图
        frame4 = i.crop(rangle)  # 使用Image的crop函数,从截图中再次截取我们需要的区域
        frame4 = frame4.convert('RGB')
        frame4.save('./image/save.jpg') # 保存我们接下来的验证码图片 进行打码

        username = "18206275210"
        password = "czx0711."

        username_ele = browser.find_element_by_xpath("//input[@name='username']")
        password_ele = browser.find_element_by_xpath("//input[@name='password']")

        username_ele.send_keys(username)
        password_ele.send_keys(password)

        time.sleep(2)
        #request_download(IMAGE_URL)

        image = cv2.imread('./image/save.jpg')
        cv2.imshow("image",image)
        cv2.waitKey(0)
        
        pic = get_captcha('./image/save.jpg')
        pic_ele = browser.find_element_by_xpath("//input[@name='t_code']")
        pic_ele.send_keys(pic)
        
        time.sleep(2)

        slider = browser.find_element_by_xpath("//div[@class='login_but']")
        ActionChains(browser).click(slider).perform()
        ActionChains(browser).release().perform()


    def request_download(IMAGE_URL):
        os.makedirs('./image/', exist_ok=True)
        import requests
        r = requests.get(IMAGE_URL)
        with open('./image/img'+ '0' + '.jpg', 'wb') as f:
            f.write(r.content) 
    '''
    for i in range(1000):
        request_download(str(i))
        time.sleep(random.randint(1,4))
        '''
    log_in()

    '''
    image = cv2.imread('./image/img0.jpg')
    cv2.imshow("image",image)
    cv2.waitKey(0)
    '''
  • 相关阅读:
    关于拉格朗日乘子法和KKT条件
    深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
    安全模式下运行Windows installer并卸载程序
    win10 进入安全模式的方法
    支持向量机通俗导论(理解SVM的三层境界)
    Windows系统防火墙用法
    浏览器起始页被篡改恶意跳转解决方法
    网络熟知端口号
    SSL/TLS协议运行机制的概述
    分布式拒绝服务攻击 DDoS
  • 原文地址:https://www.cnblogs.com/dog-and-cat/p/13321163.html
Copyright © 2011-2022 走看看