十一 10

从Github上淘来的爬虫框架

Python

python自然不用多说,拥有的爬虫框架数不胜数。

  • scrapy,大名鼎鼎的爬虫框架,功能强大,乃入门学习的必备良药。支持多种多样的配置特性,唯一可惜不支持分布式的特性,于是就诞生了scrapy-redis这个以redis为队列的分布式爬虫框架。
  • pyspider,应该是个华人写的爬虫框架,可支持的配置非常多,同时也支持分布式,只需要配置中间的消息队列就可以。
  • portia,可视化的爬虫框架,对于编程经验少的人来说相当适合学习。
  • xcrawler,轻量级的爬虫框架。个人很简易从读轻量级的爬虫框架的源代码入手,这样能够由浅入深,学地更有意思。
  • cola,也是很强大的分布式爬虫框架,只是可惜不支持python 3以上。
  • fetchman, 国人写的爬虫框架,采用grequests来并发请求。看过源代码,写的容易理解,所以对于新手来说很实用。
  • gain, 使用asyncio`来异步爬取的轻量级爬虫框架。代码很容易理解,利于学习。

Java

Java接触的不是很多,所以知道的爬虫框架不多。

  • webmagic,这个是国人写的爬虫框架,很好用,也很强大。源代码的阅读体验也不错,推荐写java的可以去熟悉熟悉。
  • crawler4j, 比较好的爬虫架构,对于学习和理解爬虫框架很有用。
  • SeimiCrawler, 分布式爬虫框架,也是受到scrapy启发。支持动态渲染的页面爬虫。
  • elves, 轻量级的爬虫框架,国人写的。易于学习和理解。

Node

node接触的更加不多,但是也淘到了不错的几个框架。

  • node-crawler,强大且流行。采用Cheerio这个包解析网页结构。
  • webster,高性能的NodeJs爬虫框架,可爬取动态渲染的内容(通过headless Chrome)。

C#

C#作为笔者除了Python以外比较熟悉的语言了。但是发现其爬虫框架少的可怜。哎,不禁叹息。

  • DotnetSpider,整体架构参照了WebMagicScrapy,是C#中比较强大的存在。目前已经支持.net core 2.0,所以,喜欢C#的可以去玩玩。还是比较不错的支持Entity Framework
  • WebCrawler,国人写的轻量级的爬虫框架。可以去学习学习~~~

Continue reading

十一 09

什么是connect代理?

什么是connect代理?

对于HTTP代理,不少人有认识上的误区,有必要说明一下,不是所有的HTTP代理都只能代理HTTP的,vice versa!

HTTP CONNECT代理服务器是一种能够允许用户建立TCP连接到任何端口的代理服务器,这意味着这种代理不仅可用于HTTP,还包括FTP、IRC、RM流服务等,甚至扫描、攻击。

十一 09

什么是高匿名、匿名和透明代理?它们有什么区别?

什么是高匿名、匿名和透明代理?它们有什么区别?

HTTP代理按匿名度可分为透明代理、匿名代理和高度匿名代理。

透明代理

使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP。

透明代理访问对方服务器所带的HTTP头信息如下:
REMOTE_ADDR = 代理服务器IP
HTTP_VIA = 代理服务器IP
HTTP_X_FORWARDED_FOR = 你的真实IP
透明代理还是将你的真实IP发送给了对方服务器,因此无法达到隐藏身份的目的。

匿名代理

使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。

匿名代理访问对方服务器所带的HTTP头信息如下:
REMOTE_ADDR = 代理服务器IP
HTTP_VIA = 代理服务器IP
HTTP_X_FORWARDED_FOR = 代理服务器IP
匿名代理隐藏了你的真实IP,但是向访问对象透露了你是使用代理服务器访问他们的。

高匿名代理

使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。

高匿名代理访问对方服务器所带的HTTP头信息如下:
REMOTE_ADDR = 代理服务器IP
HTTP_VIA 不显示
HTTP_X_FORWARDED_FOR 不显示
高匿名代理隐藏了你的真实IP,同时访问对象也不知道你使用了代理,因此隐蔽度最高。

11

正则表达式中的点星问号 .*? 或点星加号 .*+ 是什么意思

正则表达式中的点星问号 .*? 或点星加号 .*+ 是什么意思

后边多一个?表示懒惰模式。
必须跟在*或者+后边用
如:<img src="test.jpg" width="60px" height="80px"/>
如果用正则匹配src中内容非懒惰模式匹配
src=".*"
匹配结果是:src="test.jpg" width="60px" height="80px"
意思是从=”往后匹配,直到最后一个”匹配结束

懒惰模式正则:
src=".*?"
结果:src="test.jpg"
因为匹配到第一个”就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。

.表示除\n之外的任意字符
*表示匹配0-无穷
+表示匹配1-无穷

13

2019年1月 中国行政区划代码及名称(省市县区代码)

2019年1月 中国行政区划代码及名称(省市县区代码)

行政区划代码       单位名称
110000     北京市
110101     东城区
110102     西城区
110105     朝阳区
110106     丰台区
110107     石景山区
110108     海淀区
110109     门头沟区
110111     房山区
110112     通州区
110113     顺义区
110114     昌平区
110115     大兴区
110116     怀柔区
110117     平谷区
110118     密云区
110119     延庆区
120000     天津市
120101     和平区
120102     河东区
120103     河西区
120104     南开区
120105     河北区
120106     红桥区
120110     东丽区
120111     西青区
120112     津南区
120113     北辰区
120114     武清区
120115     宝坻区
120116     滨海新区
120117     宁河区
120118     静海区
120119     蓟州区
130000     河北省
130100     石家庄市
130102     长安区
130104     桥西区
130105     新华区
130107     井陉矿区
130108     裕华区
130109     藁城区
130110     鹿泉区
130111     栾城区
130121     井陉县
130123     正定县
130125     行唐县
130126     灵寿县
130127     高邑县
130128     深泽县
130129     赞皇县 Continue reading

30

HMAC与数字签名

密码学与安全技术

数字签名

数字签名用于证实某数字内容的完整性integrity和来源(或不可抵赖性non-repudiation)

典型场景:A需要给B一份数据,但B如何确认这份数据是来自于A且没有被篡改过呢?
方法:
1. A将数据通过摘要算法进行计算生成摘要信息。
2. A将摘要信息通过自己的私钥进行加密生成加密串。
3. A将数据和加密串一起发送给B。
4. B收到A的数据和加密串之后,通过A的公钥进行解密得到A数据的摘要信息。
5. B再将A发送数据部分进行进行摘要计算,如果生成的摘要与传递的摘要相同则认为数据没有被篡改。 Continue reading