当前位置: 首页 > news >正文

o2o网站建设多少钱网站排名网络推广

o2o网站建设多少钱,网站排名网络推广,wordpress做分类信息网站,网络建设服务与网站运营推广前言 #xff08;结尾有彩蛋欧#xff09; 目前#xff0c;许多网站采取各种各样的措施来反爬虫#xff0c;其中一个措施便是使用验证码。随着技术的发展#xff0c;验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码#xff0c;后来加入了英文字母和混…前言 结尾有彩蛋欧         目前许多网站采取各种各样的措施来反爬虫其中一个措施便是使用验证码。随着技术的发展验证码的花样越来越多。验证码最初是几个数字组合的简单的图形验证码后来加入了英文字母和混淆曲线。有的网站还可能看到中文字符的验证码这使得识别愈发困难。         后来 12306 验证码的出现使得行为验证码开始发展起来用过 12306 的用户肯定多少为它的验证码头疼过。我们需要识别文字点击与文字描述相符的图片验证码完全正确验证才能通过。现在这种交互式验证码越来越多如极验滑动验证码需要滑动拼合滑块才可以完成验证点触验证码需要完全点击正确结果才可以完成验证另外还有滑动宫格验证码、计算题验证码等。         验证码变得越来越复杂爬虫的工作也变得愈发艰难。有时候我们必须通过验证码的验证才可以访问页面。本章就专门针对验证码的识别做统一讲解。 接下来会涉及的验证码有普通图形验证码、极验滑动验证码、点触验证码、微博宫格验证码这些验证码识别的方式和思路各有不同。了解这几个验证码的识别方式之后我们可以举一反三用类似的方法识别其他类型验证码。 环境使用 python 3.9pycharm 上节回顾 上节我们了解了可以直接利用 tesserocr 来识别简单的图形验证码。近几年出现了一些新型验证码其中比较有代表性的 就是极验验证码它需要拖动拼合滑块才可以完成验证相对图形验证码来说识别难度上升了几个等级。本节将讲解极验验证 码的识别过程。 本节目标 我们的目标是用程序来识别并通过极验验证码的验证包括分析识别思路、识别缺口位置、生成滑块拖动路径、模拟实现滑块 拼合通过验证等步骤。 准备工作 本次我们使用的 Python 库是 Selenium浏览器为 Chrome。请确保已经正确安装 Selenium 库、Chrome 浏览器 并配置 ChromeDriver相关流程可以参考我写的其他博文说明。 了解极验验证码 现在极验验证码已经更新到 3.0 版本。全球有 16 万家企业使用极验每天服务响应超过 4 亿次。极验验证码广泛应用于直播视频、金融服务、电子商务、游戏娱乐、政府企业等各大类型网站。下面图中是斗鱼、魅族的登录页面它们都对接了极验验证码。 极验验证码的特点 极验验证码相较于图形验证码来说识别难度更大。对于极验验证码 3.0 版本我们首先点击按钮进行智能验证。如果验证不通过则会弹出滑动验证的窗口拖动滑块拼合图像进行验证。之后三个加密参数会生成通过表单提交到后台后台还会进行一次验证。         极验验证码还增加了机器学习的方法来识别拖动轨迹。官方网站的安全防护有如下几点说明。  三角防护之防模拟         恶意程序模仿人类行为轨迹对验证码进行识别。针对模拟极验拥有超过 4000 万人机行为样本的海量数据。利用机器学习和神经网络构建线上线下的多重静态、动态防御模型。识别模拟轨迹界定人机边界。  三角防护之防伪造        恶意程序通过伪造设备浏览器环境对验证码进行识别。针对伪造极验利用设备基因技术。深度分析浏览器的实际性能来辨识伪造信息。同时根据伪造事件不断更新黑名单大幅提高防伪造能力。  三角防护之防暴力         恶意程序短时间内进行密集的攻击对验证码进行暴力识别 针对暴力极验拥有多种验证形态每一种验证形态都有利用神经网络生成的海量图库储备每一张图片都是独一无二的且图库不断更新极大程度提高了暴力识别的成本。 5. 识别思路 对于应用了极验验证码的网站如果我们直接模拟表单提交加密参数的构造是个问题需要分析其加密和校验逻辑相对烦琐。所以我们采用直接模拟浏览器动作的方式来完成验证。在 Python 中我们可以使用 Selenium 来完全模拟人的行为的方式来完成验证此验证成本相比直接去识别加密算法少很多。 首先我们找到一个带有极验验证的网站最合适的当然为极验官方后台了。此按钮为智能验证按钮。一般来说如果是同一个会话一段时间内第二次点击会直接通过验证。如果智能识别不通过则会弹出滑动验证窗口我们要拖动滑块拼合图像完成二步验证验证成功后验证按钮变成如图所示的状态。 接下来我们便可以提交表单了。 所以识别验证需要完成如下三步。 模拟点击验证按钮 识别滑动缺口的位置 模拟拖动滑块 拟点击验证按钮 第一步操作是最简单的我们可以直接用 Selenium 模拟点击按钮即可。 识别滑动缺口的位置 第二步操作识别缺口的位置比较关键这里需要用到图像的相关处理方法。首先观察缺口的样子缺口的四周边缘有明显的断裂边缘边缘和边缘周围有明显的区别。我们可以实现一个边缘检测算法来找出缺口的位置。对于极验验证码来说我们可以利用和原图对比检测的方式来识别缺口的位置因为在没有滑动滑块之前缺口并没有呈现。 我们可以同时获取两张图片。设定一个对比阈值然后遍历两张图片找出相同位置像素 RGB 差距超过此阈值的像素点那么此像素点的位置就是缺口的位置。 模拟拖动滑块       第3步操作看似简单但其中的坑比较多。极验验证码增加了机器轨迹识别匀速移动、随机速度移动等方法都不能通过验证只有完全模拟人的移动轨迹才可以通过验证。人的移动轨迹一般是先加速后减速我们需要模拟这个过程才能成功。 有了基本的思路之后我们就用程序来实现极验验证码的识别过程吧。 模拟点击 首先我们先模拟登录其中 admin 和 PASSWORD 就是登录极验需要的用户名和密码如果没有的话可以先注册一下。 admin [账号] PASSWORD [密码]class CrackGeetest():def __init__(self):self.url https://account.geetest.com/loginself.browser webdriver.Chrome()self.wait WebDriverWait(self.browser, 20)self.email EMAILself.password PASSWORD 实现第一步的操作也就是模拟点击初始的验证按钮。我们定义一个方法来获取这个按钮利用显式等待的方法来实现如下所示 def get_geetest_button(self):获取初始验证按钮:return: 按钮对象button self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, geetest_radar_tip)))return button# 点击验证按钮 button self.get_geetest_button() button.click() 识别缺口 接下来识别缺口的位置。首先获取前后两张比对图片二者不一致的地方即为缺口。获取不带缺口的图片利用 Selenium 选取图片元素得到其所在位置和宽高然后获取整个网页的截图图片裁切出来即可代码实现如下 def get_position(self):img self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, geetest_canvas_img)))time.sleep(2)location img.locationsize img.sizetop, bottom, left, right location[y], location[y] size[height], location[x], location[x] size[width]return (top, bottom, left, right)def get_geetest_image(self, namecaptcha.png):top, bottom, left, right self.get_position()print( 验证码位置 , top, bottom, left, right)screenshot self.get_screenshot()captcha screenshot.crop((left, top, right, bottom))return captcha 这里 get_position() 函数首先获取图片对象获取它的位置和宽高随后返回其左上角和右下角的坐标。get_geetest_image() 方法获取网页截图调用了 crop() 方法将图片裁切出来返回的是 Image 对象。 接下来我们需要获取第二张图片也就是带缺口的图片。要使得图片出现缺口只需要点击下方的滑块即可。这个动作触发之后图片中的缺口就会显现如下所示 def get_slider(self):slider self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, geetest_slider_button)))return slider slider self.get_slider() slider.click() 调用 get_geetest_image() 方法将第二张图片获取下来即可。 现在我们已经得到两张图片对象分别赋值给变量 image1 和 image2。接下来对比图片获取缺口。我们在这里遍历图片的每个坐标点获取两张图片对应像素点的 RGB 数据。如果二者的 RGB 数据差距在一定范围内那就代表两个像素相同继续比对下一个像素点。如果差距超过一定范围则代表像素点不同当前位置即为缺口位置代码实现如下 def is_pixel_equal(self, image1, image2, x, y):pixel1 image1.load()[x, y]pixel2 image2.load()[x, y]threshold 60if abs(pixel1[0] - pixel2[0]) threshold and abs(pixel1[1] - pixel2[1]) threshold and abs(pixel1[2] - pixel2[2]) threshold:return Trueelse:return Falsedef get_gap(self, image1, image2):left 60for i in range(left, image1.size[0]):for j in range(image1.size[1]):if not self.is_pixel_equal(image1, image2, i, j):left ireturn leftreturn left get_gap() 方法即获取缺口位置的方法。此方法的参数是两张图片一张为带缺口图片另一张为不带缺口图片。这里遍历两张图片的每个像素利用 is_pixel_equal() 方法判断两张图片同一位置的像素是否相同。比较两张图 RGB 的绝对值是否均小于定义的阈值 threshold。如果绝对值均在阈值之内则代表像素点相同继续遍历。否则代表不相同的像素点即缺口的位置。 两张图片有两处明显不同的地方一个就是待拼合的滑块一个就是缺口。滑块的位置会出现在左边位置缺口会出现在与滑块同一水平线的位置所以缺口一般会在滑块的右侧。如果要寻找缺口直接从滑块右侧寻找即可。我们直接设置遍历的起始横坐标为 60也就是从滑块的右侧开始识别这样识别出的结果就是缺口的位置。 现在我们获取了缺口的位置。完成验证还剩下最后一步 —— 模拟拖动。 模拟拖动 到这里会有一个小问题。如果是匀速拖动极验必然会识别出它是程序的操作因为人无法做到完全匀速拖动。极验验证码利用机器学习模型筛选此类数据为机器操作验证码识别失败。我们尝试分段模拟将拖动过程划分几段每段设置一个平均速度速度围绕该平均速度小幅度随机抖动这样也无法完成验证。那怎么办呢 我们可以完全模拟加速减速的过程通过了验证。即前段滑块做匀加速运动后段滑块做匀减速运动利用物理学的加速度公式即可完成验证。接下来我们就可以构造轨迹移动算法计算出先加速后减速的运动轨迹最后按照该运动轨迹拖动滑块即可方法实现如下所示         def move_to_gap(self, slider, tracks):ActionChains(self.browser).click_and_hold(slider).perform()for x in tracks:ActionChains(self.browser).move_by_offset(xoffsetx, yoffset0).perform()time.sleep(0.5)ActionChains(self.browser).release().perform() 最后经过测试验证通过识别完成。 哈喽大家好为了回馈粉丝长久以来的支持博主决定开始给大家送福利了。在爬虫时网上的免费代理IP不好用怎么办不要慌[鬼脸]我给大家争取到了一个福利点击下面链接即可免费领取七天测试         http://suo.nz/2zmKBG         白嫖不要不要的
http://www.lakalapos1.cn/news/29442/

相关文章:

  • wordpress访问速度突然好慢快排seo排名软件
  • 可以做问卷的网站襄阳头条新闻
  • 百度公司做网站建筑人才网官方网站中国建筑科学院有限公司认证中心
  • 东明县网站建设无极官方网
  • 快递网站域名更换网站开发 支付宝订单号
  • 做网站app要多钱做设计有哪些免费网站
  • 南通企业网站制作网站建设外包多少钱
  • 学科建设网站网站定制开发公司推荐
  • 江苏建站管理系统开发wordpress添加媒体库
  • 中国容桂品牌网站建设信息设计网站
  • 构建网站需要会什么在线设计的软件
  • 岳阳公司网站开发昆明市住房和城乡建设局网站
  • 遵义交通建设网站wordpress制作公司主页
  • 前台和后台网站开发有什么区别平度网站建设费用
  • 免x网站淘宝网站怎么做的
  • 做网上商城网站天津市规划局官方网站建设项目
  • 网站建设实训意义企业网站建设推广合同
  • 个人网站优秀怎么做电影网站吗
  • 小工厂怎么做网站学校网站建设方案图片
  • 青田县建设局网站沈阳房产网
  • 东莞网站建设纸品包装网上挣钱最快的平台
  • 网站开发模板用什么成都旅游地图
  • 万网网站后台管理网络工程专业毕业设计论文
  • 番禺网站建设培训一个地址能注册几个公司
  • 顺德手机网站建设百度网站建设多钱
  • wordpress多语模板优化网站流量
  • 济宁网站建设top平邑哪里有做网站的
  • 南昌网站建设排行热点新闻事件
  • 高端公司网站设计餐厅vi设计公司
  • 河源市住房城乡和建设局网站南通网站建设规划