FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [View Raw Code]   [Original HTTPS Page]

Notes/python-basic-notes/python-days/Day_54.md at master · We2one/Notes · GitHub

/ Notes Public

Latest commit

 

History

History
122 lines (94 loc) · 4.55 KB

File metadata and controls

122 lines (94 loc) · 4.55 KB

破解验证码初级

验证码分类

  • 图片验证码
    1. 识别图片信息
    2. 点触验证码
    3. 计算题
  • 滑动验证码
    • 滑动轨迹

图片验证码

机器视觉(分支)-->文字识别
  • 光学文字识别 OCR (Optical Character Recognition) : 将图像翻译成文字
OCR 库概述 (了解/自学)
  • Tesseract : 由 Google 赞助
  • Tesseract 缺点 : 读取硬盘中图片里的文字不是很好,但是对于 网络爬虫使用会很强大

Selenium 手动打码

打码平台

简介
  • 验证码打码 : 区别用户是计算机还是人的公共全自动程序
  • 工作原理 : 协助通过 图灵测试
超级鹰平台实例
  • 使用

    1. 注册打码平台
    2. 查看开发文档 --> Python 语言 --> 选择跨平台 HTTP 标准 WEB 接口
    3. 在开发文档中寻找 接口地址、请求方式、参数设置等
  • 实例

    import time
    from PIL import Image
    from selenium import webdriver
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.wait import WebDriverWait
    import chaojiying
    
    def main():
    	driver = webdriver.Ie()
    	driver.get("https://inv-veri.chinatax.gov.cn/")
    	wait = WebDriverWait(driver, 20)
    	wait.until(EC.presence_of_element_located((By.XPATH, '//tr/td/input[@id="fpdm"]'))).send_keys("041001900111")
    	wait.until(EC.presence_of_element_located((By.XPATH, '//tr/td/input[@id="fphm"]'))).send_keys("46160592")
    	wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="kprq"]'))).send_keys("20191225")
    	wait.until(EC.presence_of_element_located((By.XPATH, '//tr/td/input[@id="kjje"]'))).send_keys("678071")
    
    	# selenium操作ie浏览器的click()不起作用,只能使用js点击方式
    	# 点击加载图片验证码
    	# driver.execute_script('document.getElementById("yzm_img").click()')
    	driver.execute_script('document.getElementById("yzm_img").click()')
    	time.sleep(2)
    	# yzm_code = input("请输入验证码:\t")
    	# wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="yzm"]'))).send_keys(yzm_code)
    	# # 点击查验按钮
    	# driver.execute_script('document.getElementsByClassName("blue_button")[0].click()')
    	yzm_position = driver.find_element_by_xpath('//*[@id="yzm"]')
    	size = yzm_position.size
    	location = yzm_position.location
    	print(location, size)
    	cp_position = (
    		location['x']-15,
    		location['y'],
    		location['x'] + size['width'] + 230,
    		location['y'] + size['height'] + 80
    	)
    	# print(f"验证码四边坐标左上{location['x'], location['y']}\t"
    	#       f"右上{location['x']+size['width'], location['y']}\t"
    	#       f"左下{location['x'], location['y']+size['height']}\t"
    	#       f"右下{location['x']+size['width'], location['y']+size['height']}")
    	driver.save_screenshot("a.png")
    	image = Image.open('a.png')
    	image_pic = image.crop(cp_position)
    	image_pic.save("b.png")
    	c = chaojiying.Chaojiying_Client()
    	im = open("b.png", "rb").read()
    	yzm_code = c.PostPic(im, 5000)['pic_str']
    	print(yzm_code)
    	input("回车继续")
    
    	wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="yzm"]'))).send_keys(yzm_code)
    	driver.execute_script('document.getElementsByClassName("blue_button")[0].click()')
    
    if __name__ == '__main__':
    	main()

综合项目 RPA

项目背景
  • RPA (Robitic Process Automation 机器人流程自动化): 是一款软件产品,可以模拟人在电脑上的不同系统之间操作行为,替代人在电脑前执行具有规律且重复性高的办公流程
  • RPA 能有效的优化传统办公流程、提升工作效率,间接优化企业劳动资源配置、助力企业数字化升级
  • RPA 价值
    1. 降低人力资源花费
    2. 解决繁杂的运行和业务逻辑,合理的回应单位专业知识基本建设,解决人员变化的风险性
    3. 让职工从复杂、低价值的劳动中解脱出来,从业高价值、创造力的工作中
    4. RPA 机器人可以二十四小时工作、提升单位服务能力
项目描述
  • RPA 财务机器人可以对收付款、审批、纳税申报、对账等多个环节进行 RPA 作业
  • 该项目主要对发票真伪验证这个子功能的实现,主要对 百度 AI 财务机器人接口实现对发票信息的提取,结合 selenium 进入发票真伪检验的网站对发票真伪验证
技术要点
  • 结合第三方平台对发票内容识别
  • 结合 selenium 进入发票真伪检验的网站对发票真伪验证
  • 打码平台进行发票真伪验证码识别

Back | FazBrowse Home | New Git URL