j); 52 53 if (Math.Abs(oldColor.R - newColor.R) 60 || Math.

时间:2021-12-30 06:27:41

什么是Selenium?

WebDriver是主流Web应用自动化测试框架,具有清晰面向东西 API,能以最佳的方法与浏览器进行交互。

撑持的浏览器:

Mozilla Firefox

Google Chrome

Microsoft Internet Explorer

Opera

Safari

Apple iPhone

Android browsers

具体学习相关的地点:

简书:https://www.jianshu.com/search?q=c%23%20Selenium&page=1&type=note(针对C#)

 51testing

如何破解呢? 1.  破解思路/方案

首先我也是在网上找了很多破解滑动验证的文章,主要看了下Github上面滑动验证破解学习的代码(python):https://github.com/dzhongyi/crack-geetest

代码虽然是python的,但是思路很明确,于是我就去看了下菜鸟教程的语法,大抵思路如下

1.找到滑动验证码的原图与呈现缺块凹槽的验证码图片

2.两张图片循环进行像素点比拟,然后找到像素点色差对照大点就能

确定缺块凹槽的位置,计算偏移度

3.按照计算的偏移度将滑块移动到缺块凹槽处

如何找到对应的原图和凹槽图呢?

F12看了下QQ控件滑动验证的对应的图片,去查找元素里面去找这个图片地点

凹槽图很容易被我们找到,

凹槽图查找元素直接在页面上可以找到

j); 52 53 if (Math.Abs(oldColor.R - newColor.R) 60 || Math.

同样【Network】中也能找到请求的地点图片

j); 52 53 if (Math.Abs(oldColor.R - newColor.R) 60 || Math.

例如

图片地点:

https://ssl.captcha.qq.com/cap_union_new_getcapbysig?aid=549000912&asig=&captype=&protocol=https&clientype=2&disturblevel=&apptype=2&curenv=inner&ua=TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzYzLjAuMzIzOS4xMzIgU2FmYXJpLzUzNy4zNg==&sess=CvU-D6haDOeZFH0zeUlUibQIontTfGSAVOmDKhjwtnlz8WFHRqcVt-vwYuCkafg9J_3L91cxAtwnwlVW44JTDBrrZXGMh3E3tcyKvJE6nuXBnW76_YHAndm0lkSKU7nWqpRJ36WNQbC5nv_faj4MJgr72dyG6iZz3a6wfYNxs9Wz_lYDZJUM1UOb2_yHDIxD&theme=&sid=6515699529621463059&noBorder=noborder&fb=1&forcestyle=undefined&showtype=embed&uid=111111&cap_cd=-BF6yU_7cioGpNgJGSBfMDVFU_W2BtTfRrNMFl84BHVyE1fLgKJtuQ**&lang=2052&rnd=584033&rand=0.867168954944683&vsig=c01haL2nNmvtlR5Wd4LVdBEa2wO95Wz993a9Qd8yizjOFR9GqjeC5KKmZzqxLxrBl88WHggcxN-KxPeEfyM1mhTE52Ju6v7dCFOi6HyIHMt_HR3AJpRbYCPm0mY3MtN8rqx62FFy_2L6WbMnn9f8iJZoev4XvbNrVtwfT6zUM4zL5Dw7-KndrxPdg**&img_index=1

然后我们目前只能看到凹槽图,有人会发明【Network】中还有一个地点后面index=2的图片,其实它不是原图,它是滑块

j); 52 53 if (Math.Abs(oldColor.R - newColor.R) 60 || Math.

于是大家回去【source】去找,也会发明都没有看到原图的地点呢?

难道没法找到原图的地点吗?

其实不是的,大家可以尝尝把上面那么长的地点后面index=1改为index=0,你就会发明这个图就是原图哦!

j); 52 53 if (Math.Abs(oldColor.R - newColor.R) 60 || Math.

那么接下来就是比拟像素得到缺块凹槽的位置

代码如下:

1 /// <summary> 2 3 /// 对照两张图片的像素,确定暗影图片位置 4 5 /// </summary> 6 7 /// <param></param> 8 9 /// <param></param> 10 11 /// <returns></returns> 12 13 public static int GetArgb(Bitmap oldBmp, Bitmap newBmp) 14 15 { 16 17 //由于暗影图片四个角存在黑点(矩形1*1) 18 19 for (int i = 0; i < newBmp.Width; i++) 20 21 { 22 23 24 25 for (int j = 0; j < newBmp.Height; j++) 26 27 { 28 29 if ((i>=0&&i<=1)&&((j>=0&&j<=1)||(j>= (newBmp.Height-2)&&j<=(newBmp.Height - 1)))) 30 31 { 32 33 continue; 34 35 } 36 37 if ((i >= (newBmp.Width-2) && i <= (newBmp.Width - 1)) && ((j >= 0 && j <= 1) || (j >= (newBmp.Height - 2) && j <= (newBmp.Height - 1)))) 38 39 { 40 41 continue; 42 43 } 44 45 46 47 //获取该点的像素的RGB的颜色 48 49 Color oldColor = oldBmp.GetPixel(i, j); 50 51 Color newColor = newBmp.GetPixel(i, j); 52 53 if (Math.Abs(oldColor.R - newColor.R) > 60 || Math.Abs(oldColor.G - newColor.G) > 60 || Math.Abs(oldColor.B - newColor.B) > 60) 54 55 { 56 57 return i; 58 59 } 60 61 62 63 64 65 } 66 67 } 68 69 return 0; 70 71 } 72 73

此中细心的同学会发明为啥对照像素点的时候,呈现continue跳出的情况的呢?