zoukankan      html  css  js  c++  java
  • 【python】青果教务系统模拟登陆

    使用 python 的 selenium + chrome 来模拟登陆学校教务系统

    完整代码传至 github,增加了一个自动识别验证码的功能,不过是用的别人的轮子,识别度也不高

    这是需要手动输入验证码的

    获取验证码是在一个网页上,访问以后随机生成的,想要让生成的跟我们登录时要输入的验证码对起来,需要保证使用的是同一个cookie

    from bs4 import BeautifulSoup
    from selenium import webdriver
    import requests
    import time
    from selenium.webdriver.common.keys import Keys
    from requests.cookies import RequestsCookieJar
    
    #browser=webdriver.PhantomJS(executable_path='D:/software/phantomjs-2.1.1-windows/bin/phantomjs')
    #browser.get("http://jwxt.sdaeu.edu.cn/jwweb/home.aspx")
    #为了验证,暂时不用无界
    
    #chromeOptions = webdriver.ChromeOptions()
    #chromeOptions.add_argument("--proxy-server=http://127.0.0.1:8080")
    #给chrome设置代理
    
    #browser = webdriver.Chrome(chrome_options = chromeOptions)
    browser = webdriver.Chrome()
    browser.get('http://jwxt.sdaeu.edu.cn/jwweb/home.aspx')
    #打开chrome
    
    time.sleep(2)
    browser.switch_to_frame('frm_login')
    #跳转表单
    
    browser.find_element_by_id("txt_sdertfgsadscxcadsads").click()
    jpg=browser.find_element_by_id('imgCode')
    img_src=jpg.get_attribute("src")
    #print(img_src)
    #拿到验证码url
    
    #在这里应该使用browser的ASP.NET_SessionId的值
    cookie_bro = browser.get_cookies()
    #获取browser的cookie字典
    #print(cookie_bro)
    
    cookie1=cookie_bro[0]['value']
    print("
    当前cookie为: "+cookie1)
    
    headers1={
        'Host':'jwxt.sdaeu.edu.cn',
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
        'Accept':'image/webp,image/apng,image/*,*/*;q=0.8',
        'Referer':'http://jwxt.sdaeu.edu.cn/jwweb/_data/login_home.aspx',
        'Accept-Encoding':'gzip, deflate',
        'Accept-Language':'zh-CN,zh;q=0.9',
        'Cookie':'myCookie=;'+'ASP.NET_SessionId='+cookie1,
        'Connection':'close'
    }
    
    #proxy1={"http":"http://127.0.0.1:8080"}
    #r=requests.get(img_src,headers=headers1,proxies=proxy1)
    #requests代理
    
    r=requests.get(img_src,headers=headers1)
    img_content=r.content
    print("[*]正在下载验证码...
    ")
    with open('check.jpg','wb') as f:
        f.write(img_content)
    
    #把对应的“学号”和“密码”换成自己的
    browser.find_element_by_id("txt_asmcdefsddsd").send_keys("1803120102")
    browser.find_element_by_id("txt_asmcdefsddsd").send_keys(Keys.TAB)
    browser.find_element_by_id("txt_pewerwedsdfsdff").send_keys("wuxiange360")
    
    #没有识别功能手动输入
    code = input("[*]请输入验证码: ")
    browser.find_element_by_id("txt_sdertfgsadscxcadsads").send_keys(code)
    browser.find_element_by_id("btn_login").click()
    
    #browser.close()
    #关闭浏览器
  • 相关阅读:
    asp.net保存远程图片
    JS中的转义字符
    SQL_统计某列的和
    SQL Server 出错自动回滚
    SQL中的循环语句_类似FOR循环
    转 C# 控制IE
    抓取html 写正则
    正则截取内容
    用于测试的字符串
    C#关闭IE相应的窗口 .
  • 原文地址:https://www.cnblogs.com/yichen115/p/12191795.html
Copyright © 2011-2022 走看看