爬虫之三、cookies带着你的小饼干登录

打开网址:
https://wordpress-edu-3autumn.localprod.oc.forchange.cn/wp-login.php
右击打开“检查”工具,点击【network】,勾选【preserve log】(持续显示请求记录,防止请求记录被刷新)。
展开第0个请求【wp-login.php】,浏览一下【headers】。在【General】键里,我们可以先只看前两个参数【Request URL】(请求网址)和【Request Method】(请求方式)。
get请求是明文显示,应用于获取网页数据,而像账号密码这种私密的信息,就应该用post的请求,post是非明文显示,应用于向网页提交数据.
使用post请求的格式:

login_in = requests.post(url,headers=headers,data=data)

和get请求的区别在于,一个是带data参数,一个是带params参数data的位置存在于,XHR里的Headers里的,From data
可以发现,当是get请求时,最后一个参数是params;当是post请求时,最后一个参数通常是data
在Headers中,还有一个【response headers】存储的是服务器的响应信息
get和post是两种最常用的请求方式,除此之外,还有其他类型的请求方式,如head、options等
Response Headers它存储的是服务器的响应信息,在这里面,可以找到cookies,当你登录网页时,服务器就会生成一个cookies和你的账号绑定。接着,它把这个cookies告诉你的浏览器,让浏览器把cookies存储到你的本地电脑。在下一次访问时,浏览器就能带着cookies直接登录,不需要再重复输入账号密码。
【response headers】里有set cookies的参数。set cookies就是服务器往浏览器写入了cookies。
当你登录账号并勾选“记住我”,服务器就会生成一个cookies和这个账号绑定。接着,它把这个cookies告诉你的浏览器,让浏览器把cookies存储到你的本地电脑。当下一次,浏览器带着cookies访问时服务器会知道你是谁,你不需要再重复输入账号密码,即可直接访问。
headers–form data
爬虫之三、cookies带着你的小饼干登录
log和pwd显然是我们的账号和密码,wp-submit是登录的按钮,redirect_to后面带的链接是我们登录后会跳转到的这个页面网址.

登陆的代码示例:

import requests
#引入requests。
url = ' https://wordpress-...........'
#把登录的网址赋值给url。
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
#加请求头,请求头是为了模拟浏览器正常的访问,避免被反爬虫。
data = {
'log': '.....',  #写入账户
'pwd': '.......',  #写入密码
'wp-submit': '登录',
'redirect_to': 'https://wordpress.....',
'testcookie': '1'
}
#把有关登录的参数封装成字典,赋值给data。
login_in = requests.post(url,headers=headers,data=data)
#用requests.post发起请求,放入参数:请求登录的网址、请求头和登录参数,然后赋值给login_in。
print(login_in)
#打印login_in

登陆网站并发表评论的代码示例:

import requests
#引入requests。
url = ' https://wordpre.....'
#把请求登录的网址赋值给url。
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
#加请求头,前面有说过加请求头是为了模拟浏览器正常的访问,避免被反爬虫。
data = {
'log': '......',  #写入账户
'pwd': '......',  #写入密码
'wp-submit': '登录',
'redirect_to': 'https://wordpress.....',
'testcookie': '1'
}
#把有关登录的参数封装成字典,赋值给data。
login_in = requests.post(url,headers=headers,data=data)
#用requests.post发起请求,放入参数:请求登录的网址、请求头和登录参数,然后赋值给login_in。
cookies = login_in.cookies
#提取cookies的方法:调用requests对象(login_in)的cookies属性获得登录的cookies,并赋值给变量cookies。

url_1 = 'https://wordpress.....'
#我们想要评论的文章网址。
data_1 = {
'comment': input('请输入你想要发表的评论:'),
'submit': '发表评论',
'comment_post_ID': '13',
'comment_parent': '0'
}
#把有关评论的参数封装成字典。
comment = requests.post(url_1,headers=headers,data=data_1,cookies=cookies)
#用requests.post发起发表评论的请求,放入参数:文章网址、headers、评论参数、cookies参数,赋值给comment。
#调用cookies的方法就是在post请求中传入cookies=cookies的参数。
print(comment.status_code)
#打印出comment的状态码,若状态码等于200,则证明我们评论成功。
上一篇:使用selenium webdriver实现自动登录CSDN


下一篇:(四)Jmeter系列之---http接口请求脚本优化