WhatWeb源码分析之开篇

本文是WhatWeb源码分析的开篇,作者在不熟悉Ruby语法的情况下,通过阅读源码逐渐理解其工作原理。文章重点介绍了$LOAD_PATH的作用,字符串与正则表达式的匹配,数组操作如map、flatten和compact,以及生成随机字符串的方法。
摘要由CSDN通过智能技术生成

      WhatWeb是一款非常著名的指纹扫描器,在平时渗透测试用的也比较多。从这一篇开始,陆陆续续来分析它的源码,领会其中精髓。写这篇博客的当下,我对ruby并不熟悉,所以开篇就一边看着源码一遍熟悉ruby语法吧。

      开始看whatweb这个文件的源码熟悉语法:

$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__))) unless
    $:.include?(File.dirname(__FILE__)) || $LOAD_PATH.include?(File.expand_path(File.dirname(__FILE__)))
$LOAD_PATH << "/usr/share/whatweb/"

      $LOAD_PATH是Ruby读取外部文件的一个环境变量,返回值是一个路径的数组。Ruby会在这个环境变量的路径中读取需要的require文件,如果在环境变量中找不到自己想要的文件,就会报LoadError错误。$LOAD_PATH和$:指的都是同一个环境变量。$LOAD_PATH.unshift是把括号里面得到的路径加到现在已经存在所有环境变量之前。<<会把后续给定对象附加到数组的末尾。里面涉及的文件操作就不在这里描述了。

if RUBY_VERSION =~ /^1\.9/
	require 'digest/md5'
    require 'lib/extend-http_ruby1.9.rb'   

      看一下这个=~符号是将字符串与正则表达式进行匹配。如果匹配成功,返回匹配子串在字符串中的偏移,如果不成功返回nil。

gems = %w|json mongo rchardet |
gems.each do |thisgem|
	begin
		require 'rubygems' # rubygems is optional
		if gem_available?(thisgem) #
			require thisgem			
		else
		end
	rescue LoadError
		# that failed.. no big deal
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值