import timeimport PIL
from PIL import Image
from selenium import webdriver
from selenium.webdriver.common.by import By #找[某个页面元素] --定义[定位器]的主要东西
from selenium.webdriver.support.wait import WebDriverWait #显示等待对象
from selenium.webdriver.support import expected_conditions as EC #  [某个条件为止]
from selenium.webdriver.common.action_chains import ActionChainsdef is_similar(x, y, image1, image2):pixel1=image1.getpixel((x,y))pixel2=image2.getpixel((x,y))if abs(pixel1[0]-pixel2[0])>=30 and abs(pixel1[1]-pixel2[1])>=30 and abs(pixel1[2]-pixel2[2])>=30:return Falsereturn True
#计算图片差异
def calculate_distance(image1, image2):height=image1.heightwidth=image1.widthfor i in range(width):for j in range(height):if not is_similar(i,j,image1,image2):return (i,j)return -1
#获取缺口的偏差
def get_distance(driver):# 切入iframedriver.switch_to.frame(1)#全局截屏driver.save_screenshot("total_1.png")#找到抠图的参数yz_element=driver.find_element_by_xpath('/html/body/div[5]/div[2]/div[6]/div/div[1]/div[1]/div/a/div[1]')size=yz_element.sizelocation=yz_element.locationprint(size)print(location)params_crop=(location['x']+65,location['y']+5,location['x']+size['width']-5,location['y']+size['height']-5)#抠图---有缺口局部图片image1image_t1=Image.open('total_1.png')image_part1=image_t1.crop(params_crop)image_part1.save()#更改js,出现原图driver.execute_script('document.getElementsByClassName("geetest_canvas_fullbg")[0].style="display: block"')driver.save_screenshot("total_2.png")image_t2 = Image.open('total_2.png')image_part2 = image_t2.crop(params_crop)image_part2.save()#计算二个图片之间的差距x,y=calculate_distance(image_part1,image_part2)return x+60
#控制滑块速度
def get_tracks(distance):#物理计算公式 s=v0*t+0.5*a*t*t#速度v=0#时间间隔t=0.3tracks=[]#当前距离current=0while current<distance:v0=vif current<distance*0.6:a=10else:a=-6s=v0*t+0.5*a*t*ttracks.append(round(s))current+=sv=v0+a*treturn tracks
#滑块破解
def slider_code(driver):#找到滑块# slider=driver.find_element_by_xpath('/html/body/div[5]/div[2]/div[6]/div/div[1]/div[2]/div[2]')while True:#使用鼠标操作点住滑块并且使其悬浮# ActionChains(driver).click_and_hold(on_element=slider).perform()#计算移动的距离ActionChains(driver).move_by_offset(xoffset=0,yoffset=0).perform()distance=get_distance(driver)#移动的过程使用先加后减tracks=get_tracks(distance)for s in tracks:ActionChains(driver).move_by_offset(xoffset=s, yoffset=0).perform()# #移动到目标位置之后释放鼠标ActionChains(driver).release().perform()if '首页' in driver.page_source:break#点击刷新driver.find_element_by_xpath('/html/body/div[5]/div[2]/div[6]/div/div[2]/div/a[2]').click()time.sleep(1)return True
def main():#1.博客园登录页面driver.get('https://account.cnblogs.com/signin?returnUrl=https:%2F%2Fwww.cnblogs.com%2F')#2.点击登录wait.until(EC.presence_of_element_located((By.ID,'mat-input-0'))).send_keys('你的用户名')wait.until(EC.presence_of_element_located((By.ID,'mat-input-1'))).send_keys('你的密码')wait.until(EC.element_to_be_clickable((By.XPATH, '/html/body/app-root/div/mat-sidenav-container/mat-sidenav-content/div/div/app-sign-in/app-content-container/mat-card/div/form/div/button'))).click()time.sleep(3)if '首页' not in driver.page_source:#解决滑块问题if slider_code(driver):print("登录成功!!")else:print("登录成功!!")if __name__ == '__main__':driver=webdriver.Chrome()wait=WebDriverWait(driver,20)driver.maximize_window()main()

博客园模拟登录(常见滑块验证码破解)相关推荐

  1. 博客园登录 php,博客园加密登录--jsencrypt

    博客园加密登录--jsencrypt 问题由来 前几天在做项目的时候,发现一般做登录的时候只是一个非常简单的`form`表单,但是这样肯定是不安全的!所以想去看看其他比较流行的网站是怎么实现的.说到安 ...

  2. 博客园客户端登录测试

    这是一个简单的博客园客户端登录,发送文章工具,主要用来测试socket通信,实现功能登录博客园,发表文章. 这是一个很简单的测试,未使用多线程,会有一种假死的现象,源码如下: 源码下载 1.登录界面 ...

  3. RSA加密解密在jsencrypt+c#的实现-博客园加密登录

    前几天发现博客园登录时,对登录的数据进行了加密,在我这种菜鸟看来算是高大上的功能了,于是决定研究一下. 后来发现其实园子里或者网上有类似文章,但好像都是php写的demo,并没有c#的示例,所以在收集 ...

  4. 博客园社区登录帐号和第三方绑定的设置

  5. Splinter学习--初探2,模拟博客园登录

    推荐一个免费的论文查重网站:http://www.paperfree.cn 这一次想模拟登录操作,从较为简单的开始,博客园的登录一般不需要验证码,就拿它试验了. 首先,打开园子登录首页http://p ...

  6. python爬虫:两种方法模拟登录博客园

    第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以 ...

  7. python爬虫如何模仿登录_python爬虫:两种方法模拟登录博客园

    第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以 ...

  8. 博客园win8客户端开发记录5-app设置 登录 回复评论

    这段时间完成了博客园cnblogs登录,注销和设置的相关功能 ,进入软件, 打开win8的charm setting 选择设置就是当前软件的设置选项了, 感觉这有点山寨mac os x系统(所有软件包 ...

  9. Splinter学习--模拟攥写博客园随笔

    为了验证Splinter的多种动作,这里将使用Splinter模拟博客园里面新增随笔的操作. 第一步:登录博客园,方法同Splinter学习--初探2,模拟博客园登录 第二步:跳转到"添加随 ...

最新文章

  1. php中复选框删除数据_checkbox 删除,checkbox_PHP教程
  2. 系统架构设计师 - 软件架构设计 - 基于架构开发方法 ABSD (Architecture-Based Soft Design)
  3. centos7 安装 JDK环境
  4. 通达信缠论三买三卖指标公式_【新增选股指标:中枢突破】通达信版缠论自动画线选股指标今天更新1个重要新版...
  5. Swift与OC混编过程中的配置
  6. 【Java线程】复盘线程池使用及思考
  7. 关于/etc/shadow 文件的九段内容的详细解释
  8. ros发布节点信息python_ROS入门笔记(一): ROS简介
  9. 热门NPM库 “coa” 和“rc” 接连遭劫持,影响全球的 React 管道
  10. cnpm安装webpack_【6000字】从0到1,配置webpack
  11. teechart的addarray_用Teechart画二维成像图
  12. ubuntu 键盘输入法为空_[已解决]HELP!!!fcitx 输入法不出来,键盘也不见了
  13. mui 控制旋转屏幕方向
  14. [人工智能-深度学习-32]:卷积神经网络CNN - 常见分类网络- AlexNet网络结构分析与详解
  15. 设定session.timeout=30后,可是不到5分钟session变量就消失了.为什么?
  16. 城市内涝一维二维耦合技术及在城市排水防涝领域中的实践应用
  17. 美国习惯用语flip out的中英文翻译解释和例子
  18. 你的可视化项目需要一张3D地图吗?这里有多种风格的炫酷三维地图一键下载即可开始使用
  19. tensorflow 冻结梯度
  20. 工具:语雀导出MarkDown文档后图片修复

热门文章

  1. Python爬虫爬取纵横中文网月票排行榜前1000的小说
  2. NovelAI tag在线生成器
  3. 修改word中插入-书签快捷键:Ctrl+Shift+F5快捷键的方式
  4. 静态图片如何制作成gif动图?图片在线合成gif的方法
  5. 智云android开发平台,智云平台app
  6. 2022年amazon多店铺运营技巧看这里!
  7. Word小技巧—页码设置问题
  8. 春花灿烂 我最迷人时
  9. 怎么让textarea占满整个td高度没用_家里没发现虫子,怎么才能确定是被什么害虫咬了?...
  10. Xiaojie雷达之路---雷达原理(二刷)目标截面积及其起伏特性