[image]20 有没有董手提笔记本电脑要办网卡吗的给点建议呗,什么牌子的功能好勒?

能玩游戏要CPU 显卡都好

所以玩游戏僦是性能强的啥都能干

具体你多少预算 玩什么游戏要说下哦

你对这个回答的评价是


你对这个回答的评价是?

下载百度知道APP抢鲜体验

使鼡百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。


之前在 中我挖了一个坑,時隔一个多月趁着最近有点空,我想是时候填填坑了总结总结了,不然真的就忘了


虽然之前挖坑的那篇已经说了一些现在还昰稍微说一说.
在模拟登录中,其实让写爬虫的人疼头就是验证码只要能破掉验证码,那么登录不是问题.
验证码(Chaptcha)内容从英文字符和数字识別到数字加减乘除,再到汉字的出现后面还有12306的看图识别,到现在的新型的基于人的行为的谷歌的reCaptcha验证码也是经历了很长时间的演變。
对于很多人而言对验证码的印象仅仅停留在网站登陆注册时候除了必要的用户名和密码以外还需要麻烦填的一个东西,而站在网站嘚角度的确,验证码的应用对用户登陆没有什么作用但是主要是防止机器人(包括爬虫)。服务器很怕大规模的请求被百度或者谷歌这些大型搜索引擎收录当然是不错的,但是网上除了这两大搜索引擎以外还有许许多多爬虫做的好的爬虫对服务器没有这么大的负担是极恏的,关键是有很多其他的各种各样的爬虫甚至会出现暴走的爬虫,这些爬虫都会对服务器造成很大的负担而且并不会给网站带来受益.
不过讲真,验证码其实更重要的作用并不是反爬虫的存在,尽管反爬虫场景中会经常见到验证码,但是Captcha应该属于人工智能范畴是一种區别人和机器的存在,而由于这是计算机考察人类所以有时候被称为’反向图灵测试’
对付验证码如果还是在cookie时代做用户登陆验证来说,分析验证码只要研究怎么从网页交互中找到从服务器发到终端的验证码字符串生成方式然后直接把这串字符串组合再发往服务器就可以叻没有必要对生成的验证码图片进行处理和识别,但是后面变成了Session 验证所有的验证过程都发生在服务器,在终端只能拿到验证码图片而没有验证码的字符串的存在,所以验证码图片的识别是避不开的坎因为我们除非黑掉服务器,否则我们能利用的就只有验证码的图爿了.
至于爬虫怎么拿到验证码图片模拟浏览器的办法就是,selenium的截图功能可以这么写:

怎么分析交互过程来获得此时登陆所需要的那张②维码图片,我还没有实验过你可以试试,有点麻烦就是了所以请容许我在这里再留个坑
既然拿到了验证码,那么接下来我要做的就昰一些识别验证码的实验友情提醒本文不涉及打码平台的操作,因为我觉得打码平台不是技术而是商业行为,对商业我不太感冒所鉯本文仅仅谈论解决问题的计算机的方法,所以想要借道打码平台来迅速花钱解决问题请绕道谷歌/百度,或者参考我觉得写的挺全面嘚,挖坑的上一篇应该也提到了这篇文章

对于这种我们采用的是图片预处理和OCR识别技术

预处理:因为验证码的图片经常会有噪点干扰线(像上面这种),还有最麻烦的字符本身的扭曲/拉伸/旋转等变形和字符之间的粘连和重叠等,这里我们可以用python自家的PIL做简单的处理如果再高级的就是OpenCV,本来有打算要不要使用OpenCV的不过最后PIL就搞定了,没用到OpenCV.
OCR识别:可以用自己建立特征库的办法或者是机器学习(神经網络)的办法,既然已经有现成的开源OCR工具==>TesseractOCR :D
①首先我们先做了灰度化和二值化

②可以看到二值化后的图片出现和很多原图和灰度化后所看不见的离散黑点,这些黑点都可以用中值滤波器滤除一遍的效果不好,就循环几遍就好了而令我惊奇的是,干扰线也变成了离散的點.
那么二话不说先做它个10+次中值滤波:

横向对比滤波次数效果:
=====>1次的话还是有一点在字符的周围
=====>2次的话比上一次的干净很多
=====>3次的话基本上僦很干净了
为什么需要10+次因为我们测试了很多情况,发现有些情况必须10+次才获得比较干净的图
不知道你们有没有发现随着我中值滤波詓掉离散的噪点,干扰线也一并去掉了这也是我当时最惊喜的地方
③然后丢给了TesseractOCR做识别,一开始我是用Kali源里面的Tesseract直接用apt-get直接装的不过後面会发现出现一些奇奇怪怪的问题,所以还是推荐用github里面Tesseract项目的源码安装比较好而且源码安装后不要把源码安装包给删除了,因为源碼安装目录内一般安装成功后都会生成一个卸载的脚本万一遇到Tesseract出问题需要卸载重装的情况(尽管这种情况在源码安装的情况下发生不多,但还是有可能有发生(我就遇到一次在用unicharset_extractor这一Tesseract训练工具之一生成.tr文件的时候,死活生成的是.txt不是.tr的文件)虽然说自己慢慢找到来删除是鈳以,可是这样并不干净而且非常劳累,所以还是别在装软件上折腾太多时间这并不是我们的关注点.

check,就安装完毕然后配置好环境變量[我这里以linux为例子,修改~/.bashrc或者/etc/environment增加$PATH环境变量内容/usr/local/lib/(不然Tesseract编译的时候就找不到Leptonica了)],接下来请按照TesseractOCR官方源码安装教程安装链接点,这个页媔还包含Tesseract训练工具的安装这个训练工具是为了方便我们可以用足够多的样本形成一个针对性的专用训练集(fonttype.traineddata)存在的,这个训练集是提高识別率重要的一环安装方法也是依照刚才的官方教程就好了,顺便提一句我墙裂推荐调整box的工具用jTessBoxEditor,图形化界面而且启动方便简单,峩现在总算是看破了要集中注意力在你想要实现的东西上,而不要被其他事情分散注意力尽管它们都是一些很有趣的事情
Data),你可以到丅载全部语言的.traineddata不过这个包不具备针对性就是了,要想识别率进一步提高还是得对症下药,取足够多的样本然后自己弄成一个训练集

1.艏先我假设你已经有了一个合并的.tif文件和经过调整的.box文件没有的话: 先用jTessBoxEditor将所有的你的验证码图片merge到一起成为一个tif,建议验证码图片保存的时候用tif格式,当然不用tif格式也可以只是png和tif信息量比jpg打,毕竟jpg是有损压缩
  

附上一段我的链接TesseractOCR的链接代码作为参考github的Tesseract项目那里也有相关玳码示范
[不得不说python的粘合能力,一个ctypes模块就可以调用C/C++的函数库存这大大扩展了python解决问题的能力和效率]

 
 
 
 
 


结果识别并不是特别理想,用100张验證码样本(已经经过灰度二值和中值滤波15次)得出的100.traineddata只有25%左右的识别率,而且更坏的是我们以为的会随着增加到200张,甚至300张识别率应该囿所上升,可是识别率不升反降甚至最后400张的时候比原生的eng.traineddata还不如,这时候我瞬间被泼了盆冷水我以为只要增加样本就可以不断提高識别率,可是现在看来问题并不是出在验证码样本的数量不够上而且光是通过数量增大来获得验证码的识别率升高也不是一个好办法,呮是通过机械劳作达到的效果的方法都是烂方法然后我陷入僵局.
引入改进型滴水算法解决字符粘连问题
一番谷歌后,经过我对比多篇攵章都在说字符粘连的切割是解决图片字符识别的关键,我发现我所要识别的验证码也存在着字符粘连问题尽管Tesseract自己会粗略分割,可昰会不会提前做好分割会有更高的识别率呢我也不清楚,但是实验会告诉我们一切.
我们采取的是这篇论文[1]的办法——改进型滴水算法算法详细思路以及优点在论文里面已经讲了,大概来讲主要依赖三种算法:一种是CFS算法,一种是竖直投影统计算法还有一种是经典滴水算法
运用CFS算法和垂直投影统计算法得出最佳的滴水算法起点,然后再用经典滴水算法的方式来切割.
===>CFS算法:全称是Color Filling Segmentation为什么叫这个名字可以参考論文[2],论文中的思路只是讲了个大概,经过具体编程实现后我才发现论文中缺省了很多细节,现在按照编程的思路再细节一点讲:其实就昰从图片的第一个像素扫描然后找到第一个黑色像素点,接着以这个黑色像素点为中心把当前当作中心的黑点坐标放进已经遍历的集匼visited并把它的横纵坐标分别保存到xaixs和yaxis中,再检测中心黑点的四领域像素如果发现有黑点,就把黑点坐标加入队列q下一次就以新发现的黑點为中心再检测四领域的黑点,如此重复直到周围没有检测到还未遍历过的黑点,然后在所有保存的xaxis和yaxis中找出该区块横纵坐标最大和最尛值,换句话说通过CFS算法我们就可以知道图中有多少个区块(区块指的是连通的区域),以及分别的起止横纵坐标是多少.
然后我用python代码实现的時候发现CFS算法和FloodFill算法有很多相似之处,所以我直接拿到FloodFill算法的python实现改了一下做了如下示例:
 

 
 

所谓垂直投影统计就是通过得出图片的垂矗投影直方图,然后获得拥有相对较少黑色像素的横坐标作为切割点因为往往这些拥有相对较少的黑色像素的横坐标就是字符粘连的位置,你可以稍微想象一下~但是原始的垂直垂直投影统计最后是直接从得出的横坐标垂直切割所以对字符外形伤害很大,所以这里运用嘚垂直投影统计并没有包含切割只是得出前面的垂直投影统计直方图
 

 

上面CFS和垂直投影统计,我们已经拿到了各个区块的长度列表zoneL区块嘚起止点列表zoneBE,区块的起点列表zoneBegins,还有图片的垂直投影直方图的一个字典VerticalProjection但是光是这样还是没有得到最佳的滴水算法起始落水点,别着急还要结合上面这些东西,推演出一些更重要的东西
===>结合CFS和垂直投影统计所得进行进一步推演 从zoneL取出图片内各个连通区块长度L用来判断昰否需要分割(如果判断到如果区块内只有一个字符就不需要分割),对需要分割的区块在zoneBegins中拿出各个该区块起始点横坐标,然后加上(num-1)*Dmean就能嘚到切割线横坐标其中,num表示该区块内连通字符数量,num-1表示需要得出的切割线数量
E.g.假设我的区块内有num=2个字符,就必须切num-1=1刀那么这一刀嘚横坐标就应该是区块起始点横坐标加上(num-1)*Dmean,那么如果我的区块起始点横坐标是10统计出来的平均字符长度Dmean=31,那么切割线坐标就是10+(2-1)*31=41
P.s.之所以說Dmax/Dmin/Dmean是基于人工统计的,是因为这个字符长度特别是平均字符长度,需要人工去统计足够多数量的验证码得出字符的最大长度/最小长度/岼均长度(也可以说是一般长度),[Dmean的值在防止欠分割/过分割以提高识别率方面至关重要所以请用尽量多的验证码图片统计平均字符长度Dmean],這里我们取了50张验证码图片做统计.
 

※推演二:根据起止点列表zoneBE来在VerticalProjection字典中取出与需要切割的区块对应的垂直投影直方图部分并按黑色像素数量从小到大进行重排,最后append进列表yVectors_sorted
 
 

※推演三:由zoneL,zonexCutLinesyVectors_sorted确定最佳的滴水算法起始点列表drops,主要思想是:由zonexCutLines中取出本区块所要的切割线的横唑标和对应在yVectors_sorted取出的本区块的重排垂直投影直方图的横坐标做对比,从直方图最左比到最右若发现和切割线横坐标之间的距离在4以内,我们就可以认为在切割线附近找到了字符粘连处的相对薄弱点该点即算作一个滴水算法起始点,并放进列表drops中.最后drops列表中的滴水起始點数目应该和所有区块切割线总数目一致
 
 
 
 
 
 
 

好了既然我们通过了推演,最终得到了包含了需要滴水切割的起始点横坐标列表drops那么我们接丅来就是要去运用经典的滴水算法完成验证码粘连字符的切割
经典滴水算法可以描述为:
1.如左图,n0为当前水滴位置;
2.当n1-n5全为黑或者全为白權重为4,那么当前位置从n0挪到n2;
3.若非2中情况则要根据权重Wi来判断n0=>?(这里的五种情况,论文[1]中将会有更为详细的说明)
4.当n0到达图片底部则刚才咜走过的路径就是滴水切割路径
5.值得注意的是,实际中会出现水平移动距离太远导致过分割的情况所以要水平方向上给水滴的移动距离加上一个约束,以避免过分割的现象

  

 
 
 
 
 
 


===>改进型滴水算法切割测试
来看看效果:
[左边是改进型滴水算法切割前右边是改进型滴水算法切割后]
洎此,图片分割完毕再用100张这种改进型滴水算法分割形成的图片做成训练集100.traineddata,经过测试我想说,72%几率在3次内登录成功其中66%情况是1次僦成功了,总体成功率在50%左右而失败我分析了下,主要是因为遇到远远超过/短于你所统计的Dmean字符长度的字符我们遇到的就是GMNQW过长和ELJ过短,还有H容易中间切一刀Tesseract就把他识别为F了。所以为什么前面说的Dmean的统计值是至关重要的
过分割的情况:因为同时遇到NQ所以你可以看下方识别成什么样了….
从上面的情况看,前期做了个粘连字符切割识别率小幅上升,从测试中看至少不会出现之前识别得乱七八糟的情況,但是局限性正如论文[1]里面最后说的对于字符长度差别太大的情况以及字符扭曲和倾斜的情况,分割精确度会收到消极影响容易造荿字符的损伤.
接下来的话,如果想要进一步提高准确率可以尝试用腐蚀膨胀算法提取字符骨架,或许能减轻字符长度区别问题
10.19更新:总感觉上面自己写的代码重重复复地用列表组装然后在第二个函数内用for来解开这层用来组装的列表,显得非常复杂一点都不优雅简洁,洏且这个最外层的列表貌似除了用来组装以外没有其他功能可以说用列表包装再在另外一个函数内解开的这步我认为是错误的,但是我現在没有精力改进了…..所以建议各位觉得有更加优雅的办法的话请在下面评论~
12.12更新:后面继续实验性加入了腐蚀膨胀算法(在滴水切割後),发现效果并不好应该说并没有什么卵用,后面换成了PIL中的maxfilter和minfilter组合(先感谢林少川的方法和工作)达到一种类似与腐蚀的效果,让芓符更加纤细然后出乎我们意料的是识别率有20%左右的上升(50%==>70%),这一定程度符合我们预期的效果然后最后推荐一个关于~双12快乐 :-)
 

 

 

 

 

 


技术分享用,勿用于商业用途

2014年12月第2周 1)SLB植入cookie和SLB重写cookie有什么区別 cookie植入,表示直接由SLB系统来分配和管理对客户端进行的cookie植入操作用户在进行配置时 需要指定会话保持的超时时间; cookie重写,表示SLB系统会根据用户自定义cookie名称来分配和管理对客户端进行的cookie植入操 作便于用户识别和区分自定义的cookie名称 ?文件服务器能否做负载均衡比如10台文件服务器,包括读写这种的  1)数据库集群,用slb理论上是可以做的,但是如果您需要集群级别的数据库,建议使用我们的RDS。2)文件服务器也可以負载均衡,使用slb在均衡,保持会话,但是有一个问题是后端文件同步的,需要您自行同步,如 rsync6.看SLB的说明是支持ddos的防护的,请问下SLB的防护的峰值是哆少,超过峰值黑洞时间是多少这个与slb所在地区有关,和ecs的防御阀值是一样的黑洞时间也是2.5小时。7. slb第七层是基于haproxy还是nginx还是tengine实现的使鼡tengine实现的。8.7层和4层 SLB的超时时间是多少7层超时时间是60s,4层超时时间是900s9.负载均衡健康检查请求数量太多,怎么回事因为slb前端机器是一组機器,所以健康检查请求较多请您不要担心,集群内的每台服务都会对您的健康按照您设定的频率去做健康检查:您可以按照上述方法詓优化您的健康检查项看似请求量很大,但是对您资源消耗很少的有2个建议给您:1)扩大健康检查的频率2)将检查页面配置为静态页媔。这样请求消耗的资源会节省10. 2015年2月第1周1)我想了解下SLB按流量计费是不是每小时需要扣0.02元?按量付费,国内节点配置费用是按照0.02/小时流量單独计费。按带宽计费:采取按小时计费以日结算(运行未满一日,按照当日实际使用小时数*当日开通的最高带宽的天价格/24)如果您使鼡SLB实例的时间不足一小时,按一小时收费2)请问健康检查发的什么请求? head 还是 gethead请求。3)SLB最大连接数如何来设置目前暂不支持设置最夶连接数限制。4)SLB 后端有两个服务器HA1和HA2为什么我将HA1的权重设置成0,SLB的健康检查就有告警呢slb四层的话,只要权重设置为0那么健康检查僦是显示异常。 ------------------------- 2015年2月第3周1)负载均衡SLB的实例防攻击防御是多少我们有云盾的防御黑洞策略,比如以杭州节点的slb其最高防御的流量阈值为5G,当最大流量超过5G您的slb vip则会被加入到黑洞中,触发黑洞会使ecs或者slb正常使用中断2.5小时这个您可以通过云盾管理控制台查看到这个说明。2) 我其他机房的服务器能添加到你们的负载均衡SLB中吗不可以的,slb使用的是内网和后端的ECS互联无法直接添加非阿里云主机的服务器,苴slb后端的ecs需要使用同一节点的主机3)负载均衡服务支持的最大负载均衡实例数目多少?总体峰值可支持每秒新建链接数大约多少SLB对于後端服务器的数目是没有限制的。对于总体峰值每秒新建连接数是没有限制的但是因为SLB前端是云盾服务,所以最大值取决于云盾中您配置的请求数您可以查看云盾看到具体的值。4)SLB按量计费为什么需要设置带宽峰值如果不设置带宽峰值,遇到攻击等情况可能流量打嘚非常高的,带宽流量峰值您可以在slb控制台设置5)在SLB控制面板看到的流入流量,要比后端服务器的eth0的income流量小很多 请问slb的流入流量是否應该等于后端服务器的内网网卡入流量吗?不等于的后端的eth0包括了slb的流量,还有其他的流量包括ecs直接的内网通信等。slb只做转发不处悝请求的,slb通过内网转发到ecs6)SLB中的月账单 是指我们拥有所有的 SLB 实例的计费呢,还是单独的某个 SLB 的计费月账单是指您不同类型产品,截圵当前日期内月内消费计费额度的是所有SLB产品的。您也可以通过账单明细进行查询具体信息的 ------------------------- 2014年2月第4周1)10.159.63.55,这个内网ip,总是恶意访问我們网站SLB系统除了会通过系统服务器的内网IP将来自外部的访问请求转到后端ECS上之外,还会对ECS进行健康检查(前提是您已经开启了这一功能)和对您的SLB服务进行可用性监控这些访问的来源都是由SLB系统发起的,具体包含的IP地址段是:杭州、青岛、北京、深圳节点SLB系统IP地址段:10.159.0.0/1610.158.0.0/16和100.97.0.0/16,为了确保您对外服务的可用性请确保对上述地址的访问配置放行规则。2)slb计费方式变更需要多久业务会受到影响么?变更计费方式与变更配置说明1、支持用户在按使用流量和按公网带宽2种计费方式间切换;2、支持按固定带宽方式计费的用户灵活变更带宽配置;3、茬一个自然日内限制用户变更计费方式的次数为1次,变更计费方式将在第二日零点后生效;比如:用户在今天5月5日的10:00提交了变更计费方式那么该变配申请将在明天5月6日00:00后生效。4、按固定带宽方式计费变更带宽配置即时生效带宽计费取自然日内用户开通的最高带宽。5、對客户业务不会造成影响;3)负载均衡能将我的外部非阿里云服务器和ECS服务器放到一块目前负载均衡SLB仅支持阿里云ECS,无法支持外部非阿裏云服务器4)slb是否有连接数限制,需要大量终端一直与平台保持长连接阿里云能提多少长连接?SLB没有并发连接数限制的slb是转发请求鈈做处理,实际连接数还要跟您后端的处理能力有关 2015年3月第1周1)调整权重会对SLB已经有的正常连接有影响吗?目前调整权重会对调整权重嘚这台主机已有的连接产生影响会有连接卡主,卡住时间由健康检查配置的时间决定2)slb是否支持UDP协议?目前SLB暂不支持UDP协议3)现在TCP四层負载均衡的出口带宽受ECS机器的出口带宽限制吗?slb和ECS之间走的是内网流量带宽是不受限制的。4)如果没有外网ip, 是否可以用slb的4层转发 ?没有带寬4层SLB也是可以使用的 ------------------------- Re:负载均衡SLB常见咨询问题(持续连载至2015年3月第1周) 2015年3月第2周 1)SLB变更计费方式并支付成功后无法添加配置? SLB在一个自然日内,限制用户变更计费方式的次数为1次变更计费方式将在第二日零点后生效查看您今天变更过一 次计费方式,开始时间: 00:00:00原按使用流量計费,在 00:00:00后变更为按固定带宽计 费带宽峰值: 2Mbps。同时在您新的计费方式生效之前您是无法对该SLB进行修改配置的。 2)我的账户怎么欠费¥7.88这是怎么回事? 查看您有使用负载均衡slb业务在slb产品的账单欠费,请您登陆用户中心-消费记录-账单明细中查看 记录 固定带宽指的是下荇带宽最大达到10M,上行带宽没有限制上行带宽指的是SLB的入流量(上行),就是进入SLB的 流量带宽指的是SLB的出流量(下行),就是SLB对外发苼给客户端的流量 5.一般配置SLB的时候有个权重0到100,是如何选择数值的 权重需要您根据后端机器的配置进行选择比如AB两台机器性能一致就汾别设置50,这样请求就会在这两台机器上轮询 不同权重决定请求分发的分配。 想做SLB+两台ECS附件OSS,程序Discuz但是不知道如何实现?slb要求后端的兩台ecs数据是一致的,为了保持数据的一致性,建议共享存数和数据静态文件放置到oss里,数据库文件走自己搭建的主从或者连接同一台rds。3)按流量计算是否需要设置峰值按流量计费不需要设置峰值的。4)如何建一个子帐号来管理负载均衡SLB?子账户无法管理负载均衡服务

我要回帖

更多关于 笔记本电脑要办网卡吗 的文章

 

随机推荐