项目5 模拟登录-登录某企业官网_第1页
项目5 模拟登录-登录某企业官网_第2页
项目5 模拟登录-登录某企业官网_第3页
项目5 模拟登录-登录某企业官网_第4页
项目5 模拟登录-登录某企业官网_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模拟登录—登录某企业官网1使用Cookie登录方法实现模拟登录目录使用表单登录方法实现模拟登录2表单登录是指通过编写程序模拟浏览器向服务器端发送POST请求,提交登录需要的表单数据,获得服务器端认可,返回需要的结果,从而实现模拟登录。本任务使用表单登录的方法模拟登录人民邮电出版社官网,其网址为“/”。任务描述使用Chrome开发者工具,查找表单数据的提交入口。使用Chrome开发者工具,查找需要提交的表单数据。获取验证码图片,进行人工识别验证码。使用POST请求方法登录。任务分析查找提交入口提交入口指的是登录网页(如图所示)的表单数据(如用户名、密码、验证码等)的真实提交地址,它不一定是登录网页的地址,出于安全需要它可能会被设计成其他地址。找到表单数据的提交入口是实现表单登录的前提。查找提交入口提交入口的请求方法大多数情况下是POST。由于用户的登录数据属于敏感数据,所以使用POST请求方法能够避免用户提交的登录数据在浏览器端被泄露,从而保障数据的安全。因此,请求方法是否为POST,可以作为判断是否为提交入口的依据。使用Chrome开发者工具查找网页“/login”的提交入口,步骤如下。查找提交入口打开人民邮电出版社官网,单击页面上方中间的“登录”按钮,进入登录页面,如图所示。查找提交入口在登录页面右击,在弹出的快捷菜单中,选择“检查”选项,如图所示。查找提交入口也可以在Chrome浏览器右上角的菜单中,单击地址栏最右侧的按钮,选择“更多工具”下的“开发者工具”选项,打开开发者工具,如图所示。此外,用户还可以通过“F12”键或“Ctrl+Shift+I”组合键打开开发者工具。查找提交入口打开Chrome开发者工具后,打开“网络”面板,勾选“保留日志”复选框,按“F5”键刷新网页显示各项资源,如图所示。查找提交入口在登录页面输入账号(用户名/手机号)、密码、验证码,如图所示,单击“登录”按钮,提交表单数据,此时会加载新的资源。查找提交入口观察Chrome开发者工具左侧的资源,找到“login”资源并单击,观察右侧的“标头”标签下的“常规”信息,如下图所示。可以发现“请求方法”的信息为“POST”,即请求方法为POST,可以判断“请求网址”的信息即提交入口。查找并获取需要提交的表单数据登录网页一般最少需要两个内容:账号和密码。除此之外,有很多网页还需要用户填写验证码,自动生成认证信息,然后把认证信息提交给服务器。注意:具体需要提交什么数据,需要先查找提交表单时所需要的表单数据。查找并获取需要提交的表单数据需要提交的表单数据是指向提交入口(代表服务器端)发送登录请求时,服务器端要求提交的表单数据,一般包括但不限于账号、密码、验证码。需要提交的表单数据一般多于登录网页要求输入的表单数据,由于某些需要提交的表单数据是在用户登录时自动生成并提交的,所以在登录网页是看不到的。需要注意的是,与爬取无须登录的网页相同,爬取需要登录的网页时,如果要向服务器端提交请求,那么必须带上请求头信息,伪装成浏览器进行提交,否则服务器端会拒绝该请求。除了常规的User-Agent信息外,一些网站可能出于安全需要,强制客户端必须带上某些指定的请求头信息,这就需要模拟登录时带上这些请求头信息。1.查找需要的表单数据查找并获取需要提交的表单数据在5.1.1小节中,使用Chrome开发者工具获取了提交入口,在“载荷”标签中,“表单数据”信息为服务器端获取到的表单数据,如图所示。其中,“username”表示账号,“password”表示密码,“verifyCode”表示验证码。查找并获取需要提交的表单数据当测试表单登录时,要判断哪些信息必须提交,只能通过实际测试来判断;一般账号、密码、验证码是必须提交的。如果某些信息在每次请求时,都会发生变化,那么这些信息通常也是需要提交的。对于需要提交且每次登录都不会改变的数据,直接提交即可。但对于需要提交且每次登录都会改变的数据,必须想方设法获取。例如,在本小节中,“verifyCode”信息的值每次登录都会改变,且该信息是必须要提交的,所以用户在模拟登录时需要获取到它的值。查找并获取需要提交的表单数据验证码(CAPTCHA)的目的是区分人类和机器的操作,能够有效防止非人类的用户恶意注册网站等,防止黑客对某一个特定注册用户用特定程序暴力破解的方式进行不断登录尝试,因此也成了反爬虫的一种技术手段。为此,验证码成为表单登录的主要障碍,要实现表单模拟登录,必须先获取验证码图片,而后识别验证码。当然,随着技术的发展,验证码的形式也比较多,有字符验证码、点选验证码、滑块验证码等。在模拟登录的过程中,识别验证码的方法主要有3种:人工识别、编写程序自动识别、使用打码接口识别。编写程序自动识别验证码的方法涉及图像处理相关知识,难度较高且原理复杂,故本书不涉及;而使用打码接口识别验证码需支付一定的费用。因此,本小节主要介绍人工识别验证码的方法,其操作简单且无须支付额外费用。2.处理验证码查找并获取需要提交的表单数据人工识别验证码分为3个步骤:获取验证码图片的地址;将验证码图片下载到本地;识别验证码。其中,获取验证码图片的地址最为关键,需要借助Chrome开发者工具。需要注意的是,有时获取的地址并不是验证码图片的直接地址,可能是验证码接口,若获取的是验证码接口,则需要进一步从接口中获取图片。获取验证码图片的地址的步骤如下。打开网站,进入登录页面,若已登录需先退出。打开Chrome开发者工具后打开“网络”面板,按“F5”键刷新得到新网页。查找并获取需要提交的表单数据观察Chrome开发者工具左侧的资源,找到“kaptcha.jpg?v=0.7038940961211786”资源并单击,观察右侧的“预览”标签,若显示验证码图片,如左图所示,则“kaptcha.jpg?v=0.7038940961211786”资源下“标头”标签的“请求网址”信息即验证码图片的地址,如右图所示。查找并获取需要提交的表单数据获取验证码图片的地址后,需要对图片对应的地址发送请求,将图片下载到本地,最后人工打开图片识别验证码。使用PIL库的Image模块可以自动调用本机的图片查看程序打开验证码图片,效率更高。Image模块自动打开图片分为两步:使用open函数创建一个Image对象;使用show()方法显示图片。open函数和show()方法的基本语法格式如下。Image.open(fp,mode='r')Image.show(title=None,command=None)查找并获取需要提交的表单数据open函数和show()方法的常用参数及其说明如表所示。函数/方法参数名称说明openfp接收str。表示图片路径。无默认值mode接收str。表示图片打开的模式。默认为'r'show()title接收str。表示图片标题。默认为Nonecommand接收str。表示显示图像的命令。默认为None使用POST请求方法登录POST请求方法能够保障用户提交数据的安全,因此它一般被需要登录的网站所采用。Requests库的post函数能够以POST请求方法向服务器端发送请求,它会返回一个Response<Response>对象。post函数的基本语法格式如下。requests.post(url,headers=None,data=None,json=None,**kwargs)使用POST请求方法登录post函数的常用参数及其说明如表所示。参数名称说明url接收str。表示提交入口。无默认值headers接收dict。表示请求的请求头。默认为Nonedata接收dict。表示需要提交的表单数据。默认为Nonejson接收JSON数据,表示请求数据中的JSON数据。默认为None使用POST请求方法登录使用post函数向人民邮电出版社官网的登录页面发送请求,即向网页“/login”发送请求。使用POST请求方法登录需要注意的是,若某些需要提交的表单数据是通过请求的方式获得的,则发送此请求的客户端与最后发送POST请求的客户端必须是同一个,否则将会导致最后表单登录的请求失败。这是因为当客户端不同时,请求得到的表单数据和最后发送POST请求时服务器端要求的表单数据是不匹配的。使用POST请求方法登录Cookie可用于服务器端识别客户端,当发送请求的客户端使用同样的Cookie时,即可认定客户端是同一个。Requests库的会话对象Session能够跨请求地保持某些参数。例如,它令发送请求的客户端享有相同的Cookie,从而保证表单数据的匹配。以POST请求方法为例,通过Session对象发送POST请求的基本语法格式如下。s=requests.Session()s.post(url,data=None,json=None,**kwargs)使用POST请求方法登录使用Session对象向人民邮电出版社官网的登录页面“/login”发送请求。使用POST请求方法登录模拟登录是为了爬取需要登录才能访问的网页。当进行模拟登录操作后,若对原先需要登录才能访问的网页发送请求能够返回需要的信息(一般是源代码),则证明模拟登录成功。需要注意的是,返回状态码200并不能证明登录成功,它只能表明表单数据被成功发送出去。针对人民邮电出版社官网“”,用户只有登录以后才能访问会员中心,其登录网址为“/login”。在模拟登录后,若向该网址发送请求能够返回需要的信息,则证明登录成功,否则失败。以此作为是否成功登录的判断标准较为准确,但稍显麻烦。使用POST请求方法登录经测试发现,访问模拟登录后返回的Response对象的url属性(格式如r.url),若返回的URL为“/”,则也可证明登录成功,其原因为它是在成功登录后返回的网址,否则返回的是提交入口URL“/login”。需要注意的是,每个网页判断登录成功的方法均不一样,但最终标准只有一个,即能够从需要登录的网页返回需要的信息。使用Requests库中的post函数,结合5.1.1小节和5.1.2小节已经实现的步骤,模拟登录人民邮电出版社官网“”。若最后返回的网址为“/”,则说明登录成功。使用表单登录方法模拟登录网页“/”。1使用Cookie登录方法实现模拟登录目录使用表单登录方法实现模拟登录2Cookie登录是指携带已经成功登录的客户端的Cookie向服务器端发送请求,此时服务器端会认定发送请求的客户端已经成功登录,会返回客户端需要的结果。表单登录是获得成功登录的Cookie的手段之一,相对于表单登录,Cookie登录的好处是节约时间。Cookie登录无须再向提交入口发送POST请求,因此也无须输入验证码,实现难度也较小。本任务使用Cookie登录的方法模拟登录人民邮电出版社官网“/”。任务描述使用Chrome开发者工具获取浏览器的Cookie,实现模拟登录。加载已经保存的表单登录后的Cookie,实现模拟登录。任务分析使用浏览器Cookie登录Cookie保存在发起请求的客户端(如浏览器)中,服务器端使用Cookie来区分不同的客户端。Cookie是服务器端识别客户端身份,保存客户端信息(如登录状态)的重要工具。这意味着,只要获得某客户端的Cookie,便可模仿它与服务器进行“对话”,获得服务器端的认可,从而实现模拟登录的目的。需要注意的是,Cookie具有时效性,失效的Cookie会导致登录失败,此外,原客户端退出登录,也会导致登录失败。使用浏览器Cookie登录是指使用从浏览器(客户端)获取到的成功登录的Cookie来模拟登录,可以分为以下两个步骤。使用浏览器Cookie登录获取Cookie可分以下两个步骤进行。登录网站。输入账号、密码、验证码,保证成功登录网站。保存登录成功后返回的网页地址的Cookie,步骤如下。1.获取Cookie使用浏览器Cookie登录打开Chrome开发者工具后打开“网络”面板,按“F5”键刷新网页,找到左侧的“/”资源,它代表的是本网页地址,可以看到“请求网址”的信息与本网页地址相吻合,如图所示。使用浏览器Cookie登录观察“标头”标签,找到“Cookie”信息,即登录成功后的Cookie,将其复制并保存下来,如图512所示。使用浏览器Cookie登录使用Requests库的get()方法设置发送请求,携带Cookie的参数是cookies,它接收dict。从浏览器获取的Cookie为str类型,需要将其处理成dict类型。携带浏览器的Cookie发送请求,模拟登录人民邮电出版社官网“/”。由于网站的网页结构比较特殊,为了验证是否登录成功,所以向“/login/getUserName”发送请求。若登录成功,则显示“用户已登录!”;若登录不成功,则会显示“获取用户信息失败!”。2.携带Cookie发送请求基于表单登录的Cookie登录实现第一次表单登录后,可以将Cookie保存下来以便下次直接使用。相较于使用浏览器Cookie登录的方法,表单登录后的Cookie无须处理。此外,Cookie失效后再次进行表单登录即可获得最新的Cookie。基于表单登录的Cookie登录,首先需要存储首次登录后的Cookie,然后加载已保存的Cookie,具体实现步骤如下。基于表单登录的Cookie登录存储和加载Cookie需要用到http包的cookiejar模块,它提供了可存储Cookie的对象。cookiejar模块下的FileCookieJar类用于将Cookie保存到本地磁盘以及从本地磁盘加载Cookie文件。LWPCookieJar是FileCookieJar的子类。LWPCookieJar对象存储和加载的Cookie文件格式为Set-Cookie3,是比较常用的一种。创建LWPCookieJar对象的类是LWPCookieJar,其基本语法格式如下。classhttp.cookiejar.LWPCookieJar(filename,delayload=None,policy=None)1.存储Cookie基于表单登录的Cookie登录LWPCookieJar类的常用参数及其说明如表所示。参数名称说明filename接收str。表示需要打开或保存的文件名。无默认值delayload接收str。表示从磁盘加载Cookie。默认为Nonepolicy接收str。表示实现了CookiePolicy接口的一个对象。默认为None基于表单登录的Cookie登录LWPCookieJar对象的save()方法可用于保存Cookie,其基本语法格式如下。http.cookiejar.LWPCookieJar.save(filename=None,ignore_discard=False,ignore_expires=False)save()方法的常用参数及其说明如表所示。参数名称说明filename接收str。表示需要打开或保存的文件名。默认为Noneignore_discard接收bool。表示即使Cookie将被丢弃也要将它保存下来。默认为Falseignore_expires接收bool。表示如果在该文件中Cookie已经存在,那么覆盖原文件写入。默认为False基于表单登录的Cookie登录使用save()方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论