发明内容
本发明提供了自动登录方法及装置,能够省去整理数据的繁琐过程,并避免出现不能向后兼容的问题。
本发明提供了如下方案:
一种自动登录方法,包括:
接收到自动登录到指定账户的请求时,从预先保存的配置文件中获取所述指定账户的账户地址、登录密码及登录页面的统一资源定位符URL,根据所述URL加载所述登录页面;
针对所述登录页面对应的文本标记语言HTML文档中的登录表单,根据所述登录表单中各个元素的属性,查找出所述登录表单中包含的登录密码输入框以及账户地址输入框,并确定所述账户地址输入框中需填入的内容;
将账户地址输入框中需填入的内容写入到所述账户地址输入框中,并将所述登录密码写入到所述登录密码输入框中;
提交写入了账户地址内容以及登录密码后的登录表单,完成对所述指定账户的自动登录。
一种自动登录装置,包括:
加载单元,用于接收到自动登录到指定账户的请求时,从预先保存的配置文件中获取所述指定账户的账户地址、登录密码及登录页面的统一资源定位符URL,根据所述URL加载所述登录页面;
分析单元,用于针对所述登录页面对应的文本标记语言HTML文档中的登录表单,根据所述登录表单中各个元素的属性,查找出所述登录表单中包含的登录密码输入框以及账户地址输入框,并确定所述账户地址输入框中需填入的内容;
写入单元,用于将账户地址输入框中需填入的内容写入到所述账户地址输入框中,并将所述登录密码写入到所述登录密码输入框中;
提交单元,用于提交写入了账户地址内容以及登录密码后的登录表单,完成对所述指定账户的自动登录。
一种自动登录方法,包括:接收到自动登录到指定账户的请求时,从预先保存的配置文件中获取所述指定账户的账户地址、登录密码及登录页面的统一资源定位符URL,根据所述URL加载所述登录页面;针对所述登录页面对应的文本标记语言HTML文档中的登录表单,根据所述登录表单中各个元素的属性,查找出所述登录表单中包含的登录密码输入框以及账户地址输入框,并确定所述账户地址输入框中需填入的内容;其中所述查找出所述登录表单中包含的登录密码输入框及账户地址输入框包括:查找出所述登录表单中包含的输入框,并将所有的输入框进行两两组合;选择其中任一组合中的两个输入框分别作为账户地址输入框及登录密码输入框进行以下测试:提交写入了账户地址内容以及登录密码后的登录表单,如果能够提交成功,则将该组合中的两个输入框分别确定为账户地址输入框及登录密码输入框;否则,选择其他组合中的两个输入框进行上述测试;将账户地址输入框中需填入的内容写入到所述账户地址输入框中,并将所述登录密码写入到所述登录密码输入框中;提交写入了账户地址内容以及登录密码后的登录表单,完成对所述指定账户的自动登录。
一种自动登录装置,包括:加载单元,用于接收到自动登录到指定账户的请求时,从预先保存的配置文件中获取所述指定账户的账户地址、登录密码及登录页面的统一资源定位符URL,根据所述URL加载所述登录页面;分析单元,用于针对所述登录页面对应的文本标记语言HTML文档中的登录表单,根据所述登录表单中各个元素的属性,查找出所述登录表单中包含的登录密码输入框以及账户地址输入框,并确定所述账户地址输入框中需填入的内容;其中所述分析单元包括:输入框查找子单元,用于查找出所述登录表单中包含的输入框,并将所有的输入框进行两两组合;测试子单元,用于选择其中任一组合中的两个输入框分别作为账户地址输入框及登录密码输入框进行以下测试:提交写入了账户地址内容以及登录密码后的登录表单,如果能够提交成功,则将该组合中的两个输入框分别确定为账户地址输入框及登录密码输入框;否则,选择其他组合中的两个输入框进行上述测试;写入单元,用于将账户地址输入框中需填入的内容写入到所述账户地址输入框中,并将所述登录密码写入到所述登录 密码输入框中;提交单元,用于提交写入了账户地址内容以及登录密码后的登录表单,完成对所述指定账户的自动登录。
根据本发明提供的具体实施例,本发明具有以下技术效果:
在本发明实施例中,在需要进行自动登录时,运行一个脚本,通过该脚本对登录页面上的元素进行分析,从而查找到账户地址输入框以及登录密码输入框,还可以得知需要向账户地址输入框中写入完整的账户地址,还是仅写入账户地址的用户名部分等等,然后将账户地址写入到账户地址输入框,将登录密码写入到登录密码输入框,然后提交,就可以实现自动登录。可见,在实现自动登录的过程中,不需要开发人员人工地对登录页面进行分析,也不需要构造模拟的登录表单,因此,省略了整理数据的繁琐过程。另外,由于是在登录页面加载后,对页面中的元素进行分析,因此,即使登录页面中的登录方式发生变化,也能够实现正常的登录,避免了出现不能向后兼容的问题。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
首先需要说明的是,本发明实施例提供的自动登录方法,可以适用但不限于以下情景:电子邮箱账户的自动登录、博客、微博等账户的自动登录,以及网上购物网站的自动登录等等。为了便于描述,下面仅以电子邮箱账户的自动登录为例进行介绍,其他情景与之类似,只是把“邮箱账户”改为相应的账户即可。
参见图1,本发明实施例提供的电子邮箱自动登录方法包括以下步骤:
S101:接收到自动登录到指定邮箱账户的请求时,从预先保存的配置文件中获取所述指定邮箱账户的邮箱地址、登录密码及登录页面的URL,根据所述URL加载所述登录页面;
首先需要说明的是,为了使用本发明实施例的方法进行电子邮箱的自动登录,用户在初次设置时,可以单击“添加邮件提醒账户”(当然也可能是其他滋字样)按钮,并按提示添加个人邮箱账户,在写入邮件地址以及登录密码之后,浏览器就可以将邮件地址、登录密码以及对应的登录页面的URL保存在配置文件中。这里需要说明的是,可以添加无限个账户,并且可以将各个邮箱账户的邮箱地址以下拉列表等方式显示在浏览器的工具栏中。当用户需要自动登录到某邮箱账户时,可以点击该下拉列表,然后从中选择对应的邮箱地址进行点击即可。相应的,当用户点击了某邮箱地址之后,浏览器就相当于接收到了自动登录到该邮箱账户的请求,然后从配置文件中取出与该邮箱地址对应的登录密码以及登录页面的URL,并根据该URL加载该登录页面。
S102:针对所述登录页面对应的HTML(Hypertext Markup Language,文本标记语言)文档中的登录表单,根据所述登录表单中各个元素的属性,查找出所述登录表单中包含的登录密码输入框以及邮箱地址输入框,并确定所述邮箱地址输入框中需填入的内容;
由于是要实现登录,因此就需要将用户的邮箱地址以及登录密码按照一定的格式进行提交,这种格式是写在登录页面中的,如果用户直接将登录密码机邮箱地址写入在登录页面中的相应位置,点击登录之后,就可以实现这种按照一定格式的提交。但是,现在的目的是要实现自动登录,也就是说,不是用户直接将邮箱地址以及登录密码等输入到登录页面中的指定位置,而是需要由浏览器代替用户实现这种写入的过程。然而,在本发明实施例中,并没有预先构 造一个模拟的登录表单,浏览器无法直接得知需要将邮箱地址以及登录密码写在哪里,因此,为了实现正确的写入,本发明实施例采用了一种新的实现方式,即在将登录页面加载完成之后,通过分析登录页面中的元素,来确定如何进行邮箱地址及登录密码的写入,从而实现正确地提交以及登录。
为了分析登录页面中的元素,本发明实施例采用了分析登录页面对应的HTML文档的方式。其中,HTML是用于描述网页文档的一种标记语言,HTML文档通过标记符号来标记要显示的网页中的各个部分。也就是说,网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等),浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容。因此,对于邮箱的登录页面而言,也对应着HTML文档,当登录页面加载完毕之后,就可以获取到对应的HTML文档,并且,登录页面将会显示成什么样子,是由对应的HTML文档决定的,例如,如果一个登录页面中显示了一个用户输入邮箱地址的输入框,则在HTML文档中一定存在关于该输入框的具体描述,包括将该输入框显示在什么位置,以及显示的属性(例如是否存在下拉列表等)等。因此,通过分析登录页面的HTML文档可以从整体上了解登录页面的情况。另一方面,由于HTML文档是按照一定的规范编写而成的,因此,也为机器分析提供了基础。
具体在对HTML文档进行分析时,就可以首先找到其中包含的登录表单,然后对登录表单中的各个元素的属性进行分析。为了便于理解,首先对登录表单以及其中包含的元素的概念进行简单的介绍。参见图2,方框21所示即为登录页面中的一个登录表单,其中的“帐号”、“密码”等字样,以及“帐号”之后用于输入具体帐号的输入框、“密码”之后用于输入密码的输入框等等,都是该登录表单中的元素。相应的,在该登录页面对应的HTML文档中也都包含有关于该登录表单,以及其中的各个元素的属性的描述。需要说明的是,在实际应用中,一个登录页面中可能会包含多个登录表单,例如,同样如图2所示,方框22示出的“邮箱服务1”、方框23示出的“邮箱服务2”、方框24示出的“邮箱服务3”以及方框25示出的“邮箱服务4”共用同一个登录页面,但各自对应着不同的登录表单,其中,图2中的方框21中的登录表单 就是邮箱服务1的登录表单,当通过鼠标点击等方式切换到其他的邮箱服务时,又会显示出切换后的邮箱服务对应的登录表单(图2中未示出),针对这种情况,可以枚举出HTML文档中的各个登录表单,然后分别针对各个登录表单中的各个元素进行具体的分析。
通过对登录表单中各个元素的属性的分析,就可以从中找出登录密码输入框以及邮箱地址输入框,找到这两个输入框之后,就意味着,浏览器已经获知了需要将用户的邮箱地址以及登录密码填写在什么地方。这里需要说明的是,一个完整的邮箱地址通常包括用户名及域名两部分,两部分中间用“@”隔开,在实际应用中,可能存在以下情况:根据邮箱服务提供商的不同,邮箱地址输入框中需要输入的内容可能不尽一致。例如,有些邮箱服务的登录表单中,默认给出了邮箱地址的域名部分,只需要用户在邮箱地址输入框中写入邮箱地址的用户名部分即可;还有些登录表单中可能给出了下拉列表形式的域名选择框,这种情况下,往往需要用户选择后面的域名,并将邮箱地址的用户名部分写入到邮箱地址输入框中;还有些登录表单中可能既没有给出默认的域名,也没有给出域名选择框,此时,就需要用户在邮箱地址输入框中输入完整的邮箱地址。可见,由于可能存在上述各种不同的情况,因此,仅仅确定出邮箱地址输入框的位置还是不够的,还需要确定出需要向邮箱地址输入框中输入什么内容。
具体实现时,为了查找出登录表单中包含的登录密码输入框及邮箱地址输入框,并确定出邮箱地址输入框中需填入的内容,可以采用多种方法实现,例如,在其中一种方法中,考虑到登录密码输入框通常具有比较特殊的属性(也即,在用户向其中输入登录密码时,会自动显示成“●●●”或者“***”等等),并且登录密码输入框的上一个元素要么是邮箱地址输入框,要么是域名选择框,要么是域名文本,而针对后两种情况,域名选择框或者域名文本的上一个元素就很可能是邮箱地址输入框。因此,这种方法可以是:首先枚举登录表单中的所有元素,并根据元素的类型属性(例如元素是一个输入框,并且其中输入的字符的属性为type=password),查找出登录密码输入框,然后再通过分析登录密码输入框的上一个元素,查找出邮箱地址输入框。
具体的,在查找邮箱地址输入框时,可以采用以下方式来实现:首先,判 断登录密码输入框的上一个元素是否为域名选择框,如果是,并且域名选择框的上一个元素为文本输入框,则将域名选择框的上一个元素确定为邮箱地址输入框,同时,由于域名选择框中存在多个域名,因此,但只有其中一个是与用户指定的邮箱地址相匹配的,因此可以同时根据用户指定的邮箱地址选中匹配的域名。另外,针对这种情况,由于邮箱地址的域名已经在域名选择框中选中了,因此,就可以将邮箱地址输入框中需输入的内容确定为邮箱地址的用户名部分。
如果该登录密码输入框的上一个元素不是域名选择框,则可以进一步判断登录密码输入框的上一个元素是否为文本输入框,如果是,则可以直接将登录密码输入框的上一个元素确定为登录地址输入框,此时,相当于既没有给出域名选择框也没有给出域名文本,因此,可以将完整的邮箱地址确定为邮箱地址输入框中需写入的内容;否则,如果登录密码输入框的上一个元素不是文本输入框,则继续判断登录密码输入框的上一个元素是否为域名文本,如果是,并且域名文本的上一个元素为文本输入框,则该域名文本的上一个元素确定为登录地址输入框,此时,由于已经给出了默认的域名文本,因此,可以将邮箱地址的用户名部分确定为邮箱地址输入框中需写入的内容。
需要说明的是,在上述登录密码输入框、邮箱地址输入框,以及确定邮箱地址输入框中需填入的内容的实现方式只是众多实现方式中的一种,例如,在首先查找出登录密码输入框的方式下,在查找邮箱地址输入框时,其他的方式还可以是首先判断登录密码输入框的上一个元素是不是文本输入框或者域名文本等等;或者,还可以不是首先查找登录密码输入框,而是首先查找是否存在域名选择框或者域名文本;再者,还可以根据登录表单中各个元素的属性,找出其中包含的所有的输入框,然后将这些输入框两两组合,向每一组合中的两个输入框中输入邮箱地址以及密码,并进行提交尝试,如果提交不成功,则采用其他组进行尝试,直到提交成功为止,等等。其他的具体实现方式这里不再一一赘述。
S103:将邮箱地址输入框中需填入的内容写入到所述邮箱地址输入框中,并将登录密码写入到登录密码输入框中;
由于已经找到了邮箱地址输入框以及登录密码输入框,并且确定了需要向 邮箱地址输入的内容,因此,就可以将邮箱地址输入框中需填入的内容写入到邮箱地址输入框中,并将登录密码写入到登录密码输入框中。这就相当于已经按照登录页面规定的格式填写了邮箱地址以及登录密码,其结果与用户手动填写邮箱地址及登录密码时是相同的。
S104:提交写入了邮件地址内容以及登录密码后的登录表单,完成对所述指定邮箱账户的自动登录。
在完成步骤S103中的写入操作之后,就可以将登录表单提交到邮箱服务器,等待服务器的响应,并完成自动登录过程。需要说明的是,在实际应用中,如果出现邮箱地址或者登录密码输入错误等情况,则登录页面可能会跳转到另一个页面,此时,如果仍然写入之前的邮箱地址以及密码,则可能会造出死循环。因此,为了防止这种现象的发生,可以在提交之前首先判断当前的登录页面之前是否发生过跳转,如果一个登录页面之前发生过跳转,就不应该再向服务器提交邮箱地址及登录密码,如果没有发生过跳转,再进行提交。
其中,具体在提交登录表单时,也可以有多种实现方式,例如,登录页面中一般都存在一个“登录”等提交按钮,因此,可以首先判断登录页面中是否存在提交按钮元素;如果存在,则通过调用对登录表单中提交按钮进行点击的事件进行提交;如果不存在,则可以首先判断登录表单中是否存在提交函数,如果存在,则通过调用该提交函数进行提交,否则不存在提交函数,则通过调用登录表单中的提交方法进行提交。总之,如果登录页面中存在提交按钮,则只要模拟点击该提交按钮的事件,即可触发提交流程;如果不存在,则可以调用邮箱服务提供商提供的表单提交函数,该表单提交函数会进一步调用表单提交方法进行提交;如果连这个表单提交函数都不存在,则还可以直接调用邮箱服务提供商提供的表单提交方法进行提交。当然,上述方法也不是唯一的,例如,还可以不进行前面的判断,直接调用表单提交方法进行提交,或者,不判断是否存在提交按钮,直接判断是否存在表单提交函数,等等。
为了更好地理解本发明实施例提供的电子邮箱自动登录方法,下面通过一个具体应用中的流程图进行更为详细地介绍。参见图3,该方法可以包括以下步骤:
S301:枚举HTML文档中的所有登录表单;
S302:枚举登录表单中的所有元素;
S303:判断是否找到了登录密码输入框;如果找到,进入步骤S304,否则登录失败;
S304:查找密码登录输入框的上一个元素;
S305:判断密码登录输入框的上一个元素是否为域名选择框;如果是,进入步骤S306;否则,进入步骤S308;
S306:选中与指定邮箱账户相匹配的域名;
S307:查找域名选择框的上一个元素,并进入步骤S310;
S308:判断密码登录输入框的上一个元素是否为域名文本(可以采用正则法判断);如果是,进入步骤S309,否则,进入步骤S310;
S309:查找域名文本的上一个元素,并进入步骤S310;
S310;判断是否为文本输入框;如果是,进入步骤S311,否则,登录失败;
S311:记录下该文本输入框为邮箱地址输入框;
S312:判断邮箱地址输入框与登录密码输入框之间是否存在域名选择框;如果是,进入步骤S314,否则,进入步骤S313;
S313:判断邮箱地址输入框与登录密码输入框之间是否存在域名文本;如果是,进入步骤S314,否则,进入步骤S315;
S314:将邮箱地址的用户名部分写入到邮箱地址输入框中,并进入步骤S316;
S315:将完整的邮箱地址写入到邮箱地址输入框中,并进入步骤S316;
S316:将登录密码输入到登录密码输入框中;
S317:判断登录页面是否发生过跳转;如果是,登录失败,否则,进入步骤S318;
S318:枚举登录表单中登录密码输入框之后的元素;
S319:判断是否有提交按钮元素;如果有,则进入步骤S302,否则,进入步骤S321;
S320:调用点击提交按钮的时间进行提交;
S321:判断是否有表单提交函数;如果有,进入步骤S322,否则,进入步骤S324;
S322:调用表单提交函数;
S323:判断调用表单提交函数是否成功,如果成功,进入步骤S324,否则登录失败;
S324:调用表单提交方法进行提交;
S325:完成自动登录。
由以上所述可以看出,在本发明实施例中,在需要进行自动登录时,可以运行一个脚本,通过该脚本对登录页面上的元素进行分析,从而查找到账户地址输入框以及登录密码输入框,还可以得知需要向账户地址输入框中写入完整的账户地址,还是仅写入账户地址的用户名部分等等,然后将账户地址写入到账户地址输入框,将登录密码写入到登录密码输入框,然后提交,就可以实现自动登录。可见,在实现自动登录的过程中,不需要开发人员人工地对登录页面进行分析,也不需要构造模拟的登录表单,因此,省略了整理数据的繁琐过程。另外,由于是在登录页面加载后,对页面中的元素进行分析,因此,即使登录页面中的登录方式发生变化,也能够实现正常的登录,避免了出现不能向后兼容的问题。
与本发明实施例提供的自动登录方法相对应,本发明实施例还提供了一种自动登录装置,参见图4,该装置包括:
加载单元401,用于接收到自动登录到指定账户的请求时,从预先保存的配置文件中获取所述指定账户的账户地址、登录密码及登录页面的统一资源定位符URL,根据所述URL加载所述登录页面;
分析单元402,用于针对所述登录页面对应的文本标记语言HTML文档中的登录表单,根据所述登录表单中各个元素的属性,查找出所述登录表单中包含的登录密码输入框以及账户地址输入框,并确定所述账户地址输入框中需填入的内容;
写入单元403,用于将账户地址输入框中需填入的内容写入到所述账户地址输入框中,并将所述登录密码写入到所述登录密码输入框中;
提交单元404,用于提交写入了账户地址内容以及登录密码后的登录表 单,完成对所述指定账户的自动登录。
具体实现时,分析单元402包括:
第一查找子单元,用于枚举所述登录表单中的所有元素,根据元素的类型属性,查找出所述登录密码输入框;
第二查找子单元,用于分析所述登录密码输入框的上一个元素,查找出所述账户地址输入框。
其中,当所述账户地址由用户名部分及域名部分组成时,所述第二查找子单元包括:
第一判断子单元,用于判断所述登录密码输入框的上一个元素是否为域名选择框;
第一确定子单元,用于如果是,并且所述域名选择框的上一个元素为文本输入框,则将所述域名选择框的上一个元素确定为所述账户地址输入框,并根据所述指定的账户地址选中匹配的域名;
第二判断子单元,用于如果否,判断所述登录密码输入框的上一个元素是否为文本输入框,如果是,则将所述登录密码输入框的上一个元素确定为所述账户地址输入框;否则,判断所述登录密码输入框的上一个元素是否为域名文本,如果是,并且所述域名文本的上一个元素为文本输入框,则所述域名文本的上一个元素确定为账户地址输入框。
相应的,分析单元402还可以包括:
第二确定子单元,用于如果所述登录密码输入框的上一个元素为域名选择框,或者所述登录密码的上一个元素为域名文本,则将所述账户地址的用户名部分确定为所述账户地址输入框中需填入的内容;
第三确定子单元,用于如果所述登录密码输入框的上一个元素为文本输入框,则将完整的账户地址确定为所述账户地址输入框中需填入的内容。
当然,在其他实现方式下,分析单元402也可以包括:
输入框查找子单元,用于查找出所述登录表单中包含的输入框,并将所有的输入框进行两两组合;
测试子单元,用于选择其中任一组合中的两个输入框分别作为账户地址输入框及登录密码输入框进行以下测试:提交写入了账户地址内容以及登录密码 后的登录表单,如果能够提交成功,则将该组合中的两个输入框分别确定为账户地址输入框及登录密码输入框;否则,选择其他组合中的两个输入框进行上述测试。
为了避免出现死循环的现象,该装置还可以包括:
跳转判断单元,用于在提交写入了邮件地址内容以及登录密码后的登录表单之前,判断所述登录页面是否发生过跳转,如果未发生过,则继续执行所述提交写入了账户地址内容以及登录密码后的登录表单的步骤。
具体实现时,提交单元404可以包括:
第三判断子单元,用于判断所述登录页面中是否存在提交按钮元素;
第一提交子单元,用于如果所述第三判断子单元的判断结果为存在,则通过调用对登录表单中提交按钮进行点击的事件进行提交;
第四判断子单元,用于如果所述第三判断子单元的判断结果为不存在,则判断所述登录表单中是否存在表单提交函数,如果存在,则通过调用所述表单提交函数进行提交,否则,通过调用所述登录表单中的表单提交方法进行提交。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实 现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明所提供的自动登录方法及装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。