2009年3月24日星期二

UserAgent的历史

本文网络转载
最近Google发布的Chrome引起人们的议论纷纷,但是你查看chrome的UserAgent,你可以发现useragent为 “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13”UserAgent字符串,其中有Mozilla、windows甚至还有safari,貌似天书,它到底是怎么回事儿代表什么呢?

我们来看看吧. NCSA Mosaic

最早的时候有一个浏览器叫NCSA Mosaic,把自己标称为NCSA_Mosaic/2.0 (Windows 3.1),它支持文字显示的同时还支持图片,于是Web开始好玩起来。

image然后出现了一个新的网页浏览器,“Mozilla”,其实就是“Mosaic终结者”的意思,这搞的Mosaic很不爽,(毕竟Mosaic出道早,江湖老),新浏览器最后正式公布的名称是Netscape,它把自己标称为Mozilla/1.0 (Win3.1),更好玩了。Netscape支持框架显示,后来框架在大家中间流行起来了,但Mosaic不支持框架啊,于是伟大的“用户代理人探测” 技术出现了,如果是“Mozilla”,那就发给支持框架的页面,至于其他的浏览器,则发给不含框架的页面。

ie Netscape想逗Microsoft玩儿,把Windows叫做“几乎不曾做过调试的设备驱动器”,后者很恼火。Microsoft于是推出了自己的网页浏览器,叫做Internet Explorer,希望它能成为“Netscape终结者”。Internet Explorer也支持框架,但它不是Mozilla啊,所以没人给它发送带有框架的页面。Microsoft慢慢烦躁起来,不再寄希望于网站管理员逐渐认识IE并给它发框架,而是宣称自己是“兼容Mozilla”的,开始模仿Netscape,把自己标称为Mozilla/1.22 (compatible; MSIE 2.0; Windows 95),这样Internet Explorer也能收到框架了,整个Microsoft狂喜,但网站管理员开始有点被搞糊涂了。

Microsoft把IE和Windows一起卖,并且把产品也弄得比Netscape更好了,拉开了第一场浏览器之战。结果和大家知道的一样,Netscape被干掉了,Microsoft大胜、大喜。Mozilla 但是后来Netscape以Mozilla的新名称重生了,构造了Gecko,标称其为Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826,Gecko属于渲染引擎,Firefox表现优异。Mozilla开发了Firefox, 标称为Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0,并且Firefox表现也非常优秀。Gecko扩张迅速,一些浏览器使用了它的代码并标称为Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1 ,这是一个,还有Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0,另一个,它们都伪装成Mozilla,同时也都是基于Gecko支持的。

Gecko表现优秀,IE则很差劲,于是身份甄别再次发生,输送给Gecko的是设计良好Konqueror的网页代码,其他浏览器就没有这个待遇了。Linux的跟随者很伤心,因为他们创建了基于KHTML引擎支持的Konqueror,但却不会被输送好代码,虽然他们自己认为KHTML和Gecko一样优秀,于是Konquerer开始伪装自己“像Gecko”那样以得到好的网页,并标称自己为 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko),这个世界更让人困惑了.

后来出现了Opera这样的主儿,Opera 宣称“允许用户自己决定让浏览器装成谁”,它的菜单中提供了Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51, Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51,Opera/9.51 (Windows NT 5.1; U; en) 供大家来选择,选谁是谁。

Apple开发了Safari,使用了KHTML,Safari 同时也增加了很多新特性,后来干脆一锅煮,另起炉灶叫了WebKit,但是它有希望能够得到那些为KHTML编写的网页,于是Safari标称自己为 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5,这个世界更混乱了。

Microsoft越来越担心Firefox的发展,重新启动了Internet Explorer的开发,标称自己为Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ,可以很好的渲染代码,但那要看网站管理员是否指示它这么做。

Google也开发了自己的浏览器Chrome, Chrome 使用了Webkit,有点像Safari,希望能得到为Safari编写的网页,于是决定装成Safari。这样啊,Chrome使用了WebKit渲染引擎,想装成Safari,而WebKit呢又伪装自己是KHTML,KHTML呢又是伪装成Gecko的,同时所有的浏览器又都宣称自己是 Mozilla,于是,Chrome宣称自己是Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13,,UserAgent字符串彻底混乱了,也几乎不再发挥任何作用,每个人都宣称自己是别人,混乱充斥人间啊。

2009年3月16日星期一

imacros中使用变量

在这篇教程中我们将学习如何在imacros中使用变量。
在iMacros中有两种类型的变量:内建变量和用户定义的变量。

内建变量:
内建变量是用来界定某些性能的宏观的行为,例如宏超时值:
SET !TIMEOUT 33
执行上面一句意味着设定页面超时时间为33s
有三个特殊的内置变量, !VAR1 , !VAR2和!VAR3。这些变量可以设置为任何你自定义的值。
例如:
SET !VAR1 helloworld
设定!VAR1为 helloworld (ps: 代表空格
代表回车)
PROMPT Pleaseentertext !VAR1
弹出一个输入框,你在输入框中输入的内容将传到!VAR1中。

用户定义的变量:
自定义变量是用户在外部控制时传入的变量。例如在Visual Basic脚本示例这将如下所示:
iret = imacros.iimSet("-var_ITEM", "15")(ps:有时候也可以这样设置:iimSet("ITEM", "15"),设置变量ITEM)
在调用的地方使用{{ITEM}}替换要代替的数值。

iMacros让您指定文本文件, CSV文件作为输入。
例如这样一个csv文件:
"ARTIST" , "ALBUM TITLE" , "PRICE"
"Beatles", "Abbey Road", "13.49"
"Beatles", "The Beatles 1,2,3" , "25.49"
"Mozart" , "Symphonies No.40 & 41", "9.98"
"Mozart", "Requiem", "7.50"
这个文件的文件名为OnlineAuction.csv
我们现在需要告诉iMacros宏如何找到这个数据输入文件。为此,我们使用内置的变量!DATASOURCE
SET !DATASOURCE OnlineAuction.csv
如果您不使用任何路径信息DataSource的路径默认定位在标准数据源的目录,可在选项对话框中指定这个路径。默认路径是iMacros数据路径下的datasources文件夹。
选择好数据源文件后我们需要告诉iMacrosCSV文件有多少列。我们用!DATASOURCE_COLUMNS变量设置:
SET !DATASOURCE_COLUMNS 3
此数字必须完全匹配输入文件的列数
既然我们要插入的所有数据集,我们需要的宏循环来控制。
SET !DATASOURCE_LINE {{!LOOP}} (ps:loop就是脚本循环的次数,还记得play loop那个循环运行按钮么~~)
这个内建变量是用来设置读取文件的第几行。
现在,我们已经把准备工作都做好了。接下来我们要读取出对应的数据。
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Name CONTENT={{!COL1}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Album CONTENT={{!COL2}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Price CONTENT={{!COL3}}
{{!COL1}} 代表的是读取出对应的第一列数据

数据库
这个例子只适用于专业版。
iMacros可以直接从数据库读取数据。
这个例子中的代码Visual Basic脚本连接到Microsoft Access数据库: (ps:这个功能我没有尝试使用过,谁试验觉得好用了告诉我:))
' open database
set rs = CreateObject("ADODB.Connection")
rs.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _
& mypath & "IIM-TEST-SUBMIT.MDB")

' use SQL to select information
sql = "select * from table1"
set rs = rs.Execute(sql)

' start iMacros
set iim1= CreateObject ("iMacros")
iret = iim1.iimInit
iret = iim1.iimDisplay("Submitting Data from MS ACCESS")

' loop through result dataset
do until rs.eof
'Set the variable
iret = iim1.iimSet("-var_FNAME", rs.fields(0))
iret = iim1.iimSet("-var_LNAME", rs.fields(1))
iret = iim1.iimSet("-var_ADDRESS", rs.fields(2))
iret = iim1.iimSet("-var_CITY", rs.fields(3))
iret = iim1.iimSet("-var_ZIP", rs.fields(4))
iret = iim1.iimSet("-var_STATE-ID", rs.fields(5))
iret = iim1.iimSet("-var_COUNTRY-ID", rs.fields(6))
iret = iim1.iimSet("-var_EMAIL", rs.fields(7))
'Run the macro
'Note: This is the SAME macro, as in the FILE-2-WEB-METHOD2.VBS example script!!!
iret = iim1.iimPlay("wsh-submit-2-web")
If iret < 0 Then
MsgBox iim1.iimGetLastError()
End If
rs.movenext
loop

iret = iim1.iimDisplay("Done!")
iret = iim1.iimExit
WScript.Quit(0)

iMacros介绍

iMacros介绍

主窗口
主窗口由两部分组成,左侧看到iMacros控制窗口和你看到的浏览器窗口。
在iMacros控制窗口可分为两部分。 上面的那部分可以看到您的所有宏。只有文件名以iim结尾的宏才被iMacros认为是正确的宏文件。iMacros宏的默认文件夹是 C:\Documents and Settings\All Users\Documents\iMacros\Macros。下面部分部由3个选项卡:播放,录制和
修改(Play,Rec,Edit)组成。顾名思义,在播放选项卡你会发现控制播放宏,在录制选项卡控制记录,编辑选项卡中你会发现控制进行编辑。

录制
如果在回放时遇到问题,手动选择点击模式进行更改。对于非HTML的内容,例如Flash,您必须使用DirectScreen模式(ps:插件模式没有这个功能)
录制你自己的宏:选择选项卡点击“记录” ,开始录制。现在你可以随意的操作,如浏览网站,填写表格。Imacros会录制下你的任何操作。

在您完成录制点击“停止” 。.目前的记录将自动保存为#当前宏。按“保存” ,将
它保存。注意iMacros试图删除所有重复的宏或目录。

提示:
在录制不要使用您的浏览器返回或转到按钮或更改地址栏。.
如果宏观产生错误时重播您可以尝试选择录制选项( 点击模式 )手动从对话框后,单击单击模式修改录制模式 。
各种不同的模式:
自动模式: iMacros试图选择最佳录制选项(建议在大多数情况下的记录上的HTML的网站) 。.
HTML 模式: iMacros使用完全的HTML TAG进行录制。
X / Y模式:使用该录制模式将模拟点击网页上相对位置。
DirectScreen模式 :如果其它方法都失败这是最终的解决办法。它模仿标准鼠标点击浏览器窗口内。

回放
打开播放选项卡,选择宏从列表,然后按下“播放”来进行回放宏。
你可以清楚的看到宏在运行过程中的步骤。
点击"Play (Loop)"可以重复运行多次同一个宏,填写需要运行的最大数量,并按下“Play (Loop)”即可。
有两种方法会影响宏重播的速度。

第一种选择是重放速度,可设置为三种不同的速度:
快速:宏回放时最大速度(推荐在大多数情况下) 。
中等:iMacros会在每一个命令之间等待0.25s。
缓慢:iMacros会在每一个命令之间等待1s。

第二种选择是在宏中插入WAIT命令。
例如:WAIT SECONDS=3 意思是等待3秒

编辑宏:
所有录制的宏都会以纯文本文件形式存储在iMacros的Macors目录中。
您可以使用你喜欢的任何文本编辑器手动修改和调整宏。在您保存的更改后进行回放将立即看到修改后的效果。

安全
iMacros密码安全选项
许多网站要求你输入一个用户名和密码才能进入该网站。在iMacros密码管理可帮助您存储您的用户名和密码的宏,并输入他们会自动为您当您访问这些网站。
有三种方式来存储你的密码。
没有加密:
密码是以明码形式存放在宏的纯文本文件中。这种方法非常方便,但请记住,每个打开了宏的人都可以读取密码。

加密网站的密码:
密码加密使用强大的256位加密基于行业标准的AES算法。这种加密需要一个主密码,这是储存在您的电脑在iMacros配置文件。.默认主密码是“ iOpus2004 ” 。 这个主密码可以在安全选项卡上的选项对话框中改变。破解iMacros的配置文件是非常困难的,但不是不可能。
加密网站的密码,并要求主密码:
密码是加密的使用相同的强大的256位加密基于行业标准的AES算法,但主密码未保存。
它仅仅保存在您运行宏时的内存中。当您每次启动iMacros和使用网站的密码是您需要重新输入一次密码。这种方法比其他两种选择更安全,但不方便。