为了账号安全,请及时绑定邮箱和手机立即绑定

Python2.7自动登录并获取cookies

标签:
Java Python

前言

Python由于其第三方库扩展多、接口简洁、处理网页方便等原因被广泛应用于爬虫的编写。网络爬虫的第一步即是要能够实现代码的自动登录,登录后使用获得的cookies来访问页面。

本文使用Python2.7.13+Requests来实现简单网页的登录(不含验证码)。

获取需要提交的变量

自动登录的基本原理是模拟人工填入账号密码,并向服务器进行提交,获取服务器的应答(以cookies的形式)。因此第一步我们需要知道在网页端登录时,浏览器向服务器提交的账号与密码的变量分别是什么?

这里以Google Chrome为例演示如何查看提交的账号与密码的变量名(其他浏览器类似):

打开需要登录的网址,并按F12,之后选择“Network”标签(勾选“preserve log”)如图:

https://img1.sycdn.imooc.com//5d5812f70001c5fb08830359.png

之后填入账号、密码并进行登录,登录成功后在下面的页面Name中点击第一个,会在右边弹出下面的窗口,滑动到最下面可以看到Form Data,即是浏览器向服务器POST提交的数据。自动登录就是使用程序向服务器提交这些数据:其中userName即是输入的账号,passWord即是输入的密码。(注:如果第一步的时候不勾选“preserve log”,在这一步中可能看不到Form Data)


https://img1.sycdn.imooc.com//5d5812fb0001b4c208880502.png

Requests模拟登陆

Requests是Python中的HTTP库,能够模拟浏览器进行网站的登录与网页内容的获取。下面使用Python代码模拟Chrome进行登录:

import urllib

import urllib2

import requests

import re

import sys

import requests.utils

sys.path.append("libs")

s=requests.session()#获取会话对象

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36','Content-Type':'application/x-www-form-urlencoded'}#设置请求的信息头

url="http://my.its.csu.edu.cn"#设置请求的URL

Data={'userName':'XXXXX','passWord':'XXXX'}#设置请求时填写的账号密码(变量名上一步获得)

login=s.post(url,data=Data,headers=headers)#向服务器发出POST请求

print login.status_code#请求的状态码

print login.url#请求成功后跳转页面的URL

dict_cookies=s.cookies.get_dict()#获取cookies

print login.text#获取跳转后页面的内容

response=s.get(afterUrl,cookies=s.cookies,headers=headers)#获取登录后页面的内容,其中afterUrl为登陆后可见的URL

总结

使用Python2.7进行网站的模拟登陆,同时获得登陆成功的cookies。针对含有验证码的情况暂时没有考虑,后续会加上含有验证码时的处理方法。


作者:Atomwh
链接:https://www.jianshu.com/p/e64286177086


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消