您的位置:首页 > 编程语言 > Python开发

python模拟登陆杂记

2014-10-17 22:07 204 查看
从一个菜,开始练习要弄懂这些还真是费了很大的力气啊! 网上这种登陆的代码真的是一大堆了,所以代码就免了,也没什么意思!

就说说那些高手不会说的东西,就像课本里面只讲结论,而不讲这些贤人怎么思考的过程。我认为结论固然重要,但是思考的过程也很重要!

首先,有http协议和cookie的一些知识也很必要,没有也没有很大关系!

要模拟登陆,就需要懂整个登录的过程,浏览器的开发者工具 就发挥作用了-->【手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程

每次登录的时候,网站在没有输入密码的情况下,依然能够登录,这里的关键就是Cookie,cookie的作用及含义,请转角Google。python有很多工具automate handle cookie,方法请 ‘Google’

众所周知,百度的登陆是很简单的方式,基本没有加密就直接传送了,这真的好吗?

无论是百度还是微博登录过程中,在提交passwd及username之前,一定要获取其他的东西,百度的token,微博的servertime,nonce,rsakv,及微博wap端的rand,vk,passwd.

获取到这些以后,如果password and username is encrypted, 那么在网上找到相应的加密方式,后者直接取找相应的加密的JS,去看,然后模拟。

微博的过程是很令人恶心的,加密就算啦,还在登录之后还要折腾两次。【微博的wap端很简单,对于爬取数据是很好的】

最后说说,常用的封杀爬虫的手段,从网上学的,(本人就是伸手一族,不学习别人的长处,怎么能够实现文化的传承尼,呵呵):

1.查看user-Agent。补救,在headers中进行mask.,微博的就不行的哦,robots协议。

2.若抓取频率过高则认为是爬虫进行封杀。补救利用time库中sleep()进行暂停。

3.同一ip抓取短时间超过一定数目,则判定为爬虫进行封杀。补救使用大量的代理,这样很累,也可行度不高,还有人说用程序调用cmd命令重新不断刷新IP,好像可行性也不是很高,那就是放大招的时候了,使用socks代理,这样的代理,网站是检查不出来的哦!看到知乎上有人说,ADSL使用多地方的线路,然后切换IP,这个应该成本很大哦!当然更换IP是王道,但是之针对企业级别的哦!小人物吗,就time.sleep(),更改一下header,或者从网上搜一些免费的代理用就算了!X-Forwarded-For听说人家主要是用这个检测代理与否的,但是也已经有了能伪造的这个的哦,google一下就知道了!

4.听说使用,反向域名解析,如果ip来自那几大搜索引擎则不封杀,否则进行封杀。【这招挺狠】

爬虫的效率可利用提高dns解析速度,多线程,提高抓取效率!还有分析网页的速度也是很关键的东西,现成的方法中,主要都是一次性将网页导入内存,如果是线程并行,同时载入多个网页,这样很吃内存不说,如果超过一定的数目,则造成大量的内存交换,这样的损失在大量的工作上是很巨大的。这也是,尽可能的使用人工分析JS的逻辑进行模拟的原因了,加载那些JS模拟器,很费内存,但是这种在大量的类型的任务面前,工作量和消耗还是很容易权衡地。

还要多说一点,要开始学某项新技术,一定不要用百度,搜索结果真的很啃人,否则,回头发现google随便就能搜到,整个系列的文章,且质量保证。

参考:http://www.linuxde.net/2013/04/13308.html
http://www.jb51.net/article/46053.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: