from selenium import webdriver
from selenium.webdriver import ActionChains
from PIL import Image
import time def get_snap(driver):
driver.save_screenshot('snap.png')
snap_obj=Image.open('snap.png')
return snap_obj def get_image(driver):
img=driver.find_element_by_class_name('geetest_canvas_img')
time.sleep(2) #等待图片加载完毕
size=img.size
location=img.location left=location['x']
top=location['y']
right=left+size['width']
bottom=top+size['height'] snap_obj=get_snap(driver)
image_obj=snap_obj.crop((left,top,right,bottom))
# image_obj.show()
return image_obj def get_distance(image1,image2):
start_x=58
threhold=60
# print(image1.size)
# print(image2.size)
for x in range(start_x,image1.size[0]):
for y in range(image1.size[1]):
rgb1=image1.load()[x,y]
rgb2=image2.load()[x,y]
res1=abs(rgb1[0]-rgb2[0])
res2=abs(rgb1[1]-rgb2[1])
res3=abs(rgb1[2]-rgb2[2])
if not (res1 < threhold and res2 < threhold and res3 < threhold):
return x-7 def get_tracks(distance):
distance+=20
#s=v*t+0.5*a*(t**2) v0=0
s=0
t=0.5
mid=distance*3/5
forward_tracks=[] while s < distance:
if s < mid:
a=2
else:
a=-3 v=v0
track=v*t+0.2*a*(t**2)
track=round(track)
v0=v+a*t
s+=track
forward_tracks.append(track)
back_tracks=[-1,-2,-2,-3,-2,-2,-1]
xxx = [-1,-2,-2,-1,-1,-1]#
return {"forward_tracks":forward_tracks,'back_tracks':back_tracks,'xxx':xxx} try:
driver = webdriver.Chrome()
driver.get('https://passport.cnblogs.com/user/signin')
driver.implicitly_wait(3) #1、输入账号、密码,然后点击登陆
input_user=driver.find_element_by_id('input1')
input_pwd=driver.find_element_by_id('input2')
login_button=driver.find_element_by_id('signin') input_user.send_keys('Fugui')
input_pwd.send_keys('xxxx')
login_button.click() #2、点击按钮,弹出没有缺口的图
button=driver.find_element_by_class_name('geetest_radar_tip')
button.click() #3、针对没有缺口的图片进行截图
image1=get_image(driver) #4、点击滑动按钮,弹出有缺口的图
slider_button=driver.find_element_by_class_name('geetest_slider_button')
slider_button.click() #5、针对有缺口的图片进行截图
image2=get_image(driver) #6、对比两张图片,找出缺口,即滑动的位移
distance=get_distance(image1,image2)
# print(distance) #7、按照人的行为行为习惯,把总位移切成一段段小的位移
traks_dic=get_tracks(distance) #8、按照位移移动
slider_button=driver.find_element_by_class_name('geetest_slider_button')
ActionChains(driver).click_and_hold(slider_button).perform()
#先向前移动
forward_tracks=traks_dic["forward_tracks"]
back_tracks=traks_dic["back_tracks"]
xxx=traks_dic["xxx"]
for forward_track in forward_tracks:
ActionChains(driver).move_by_offset(xoffset=forward_track,yoffset=0).perform() #短暂停顿
time.sleep(0.2) # 先向后移动
for back_track in back_tracks:
ActionChains(driver).move_by_offset(xoffset=back_track,yoffset=0).perform() time.sleep(0.3) for xx in xxx:
ActionChains(driver).move_by_offset(xoffset=xx,yoffset=0).perform() ActionChains(driver).move_by_offset(xoffset=-3,yoffset=0).perform()
ActionChains(driver).move_by_offset(xoffset=3,yoffset=0).perform()
time.sleep(0.3)
ActionChains(driver).release().perform()
time.sleep(10)
finally:
driver.quit()

破解验证码模拟登陆cnblogs的更多相关文章

  1. 验证码破解 | Selenium模拟登陆微博

    模拟登陆微博相对来说,并不难.验证码是常规的5个随机数字字母的组合,识别起来也比较容易.主要是用到许多Selenium中的知识,如定位标签.输入信息.点击等.如对Selenium的使用并不熟悉,请先移 ...

  2. 利用selenium库自动执行滑动验证码模拟登陆

    破解流程 #1.输入账号.密码,然后点击登陆 #2.点击按钮,弹出没有缺口的图 #3.针对没有缺口的图片进行截图 #4.点击滑动按钮,弹出有缺口的图 #5.针对有缺口的图片进行截图 #6.对比两张图片 ...

  3. 验证码破解 | Selenium模拟登陆12306

    12306官网登录的验证码破解比较简单,验证码是常规的点触类型验证码,使用超级鹰识别率比较高. 思路: (1)webdriver打开浏览器: (2)先对整个屏幕截屏,通过标签定位找到验证码图片,并定位 ...

  4. 使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)

    urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...

  5. 爬虫之 cookie , 验证码,模拟登陆,线程

    需求文档的定制 糗事百科的段子内容和作者(xpath的管道符)名称进行爬取,然后存储到mysql中or文本 http://sc.chinaz.com/jianli/free.html爬取简历模板 HT ...

  6. 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...

  7. c# 使用 HttpWebRequest模拟登陆(附带验证码)

    在C#中,可以使用HttpWebRequest进行相关的模拟登陆,登陆后进行相关的操作,比如抓取数据,页面分析,制作相关登陆助手等等. 先说下流程 1.使用httpwebrequest先进入你要登录的 ...

  8. 用session模拟登陆,手动输入验证码

    # 本练习是模拟登陆及验证码处理(把验证码下载到本地后手动输入) # 1 通过分析页面获得form表单的登陆接口为 action="https://www.douban.com/accoun ...

  9. pytho简单爬虫_模拟登陆西电流量查询_实现一键查询自己的校园网流量

    闲来无事,由于校园内网络是限流量的,查询流量很是频繁,于是萌生了写一个本地脚本进行一键查询自己的剩余流量. 整个部分可以分为三个过程进行: 对登陆时http协议进行分析 利用python进行相关的模拟 ...

随机推荐

  1. Ubuntu18.04 安装后的简单实用设置[未完成]

    1. 安装完成. 2. 更新 sudo apt-get update 3. 修改vi 放置键盘错位的问题 编辑文件/etc/vim/vimrc.tiny 将“compatible”改成“nocompa ...

  2. TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)

    在数据库设计中,常常会有如下这种关联模型,分类表中一条分类对应多个商品表中的商品 如果要获得分类表中每条分类 以及 对应的商品的信息,则需要先查询分类表中的数据,然后根据结果遍历查询商品表,最后把数据 ...

  3. send和sendmsg性能测试【sendmsg和send的性能基本一样,并没有得到优化】

    1,摘要:测试send和sendmsg的性能,影响这两个函数性能的因素主要有发送的字节大小,增加循环次数,从100到10000000(千万)减少计算误差 2,基本信息cat /proc/cpuinfo ...

  4. pixi.js v5 快速了解

    pixi.js 追求简单,  性能,高价值. pixi.js v5将是一交比较大的升级,代码更加精简,性能更加强悍,功能更加丰富,扩展更加高效 pixi.js一步一脚印,版本持续稳定的更新, 深入学习 ...

  5. 【bzoj3881】[Coci2015]Divljak AC自动机+树链的并+DFS序+树状数组

    题目描述 Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...

  6. MT【174】凹凸无妨

    已知函数$f(x)=|x^3+3x^2-ax-b|$,对任意$a,b\in R$存在$x\in[-3,0]$使得$f(x)\le m$成立,求$m$的范围.求 $\displaystyle\min_{ ...

  7. Problem A: 踢罐子 解题报告

    Problem A: 踢罐子 Description 平面上有\(n\)个点,其中任意2点不重合,任意3点不共线. 我们等概率地选取一个点A,再在剩下的\(n-1\)个点中等概率地选取一个点B,再在剩 ...

  8. 洛谷 P1344 [USACO4.4]追查坏牛奶Pollutant Control 解题报告

    P1344 [USACO4.4]追查坏牛奶Pollutant Control 题目描述 你第一天接手三鹿牛奶公司就发生了一件倒霉的事情:公司不小心发送了一批有三聚氰胺的牛奶.很不幸,你发现这件事的时候 ...

  9. SPOJ6340 ZUMA - ZUMA

    题意:n个珠子排成一排,都有各自的颜色. 你可以选择不少于w个连续同色的珠子消掉,也可以先放着.你还可以任意插入任意颜色的珠子. 求全部消掉至少要插入几个珠子. 解: 什么毒瘤东西...... 有个十 ...

  10. POJ 3710 无向图简单环树上删边

    结论题,这题关键在于如何转换环,可以用tarjan求出连通分量后再进行标记,也可以DFS直接找到环后把点的SG值变掉就行了 /** @Date : 2017-10-23 19:47:47 * @Fil ...