作者:Libra | 来源:互联网 | 2023-08-27 11:05
用python怎么自动登录一个网站呢?之前我也有过这样的疑问,老自己去填,多麻烦啊,接下来这篇文章将讲解怎么用python2模拟登陆人人网。一、用fiddler查看登录信息模拟登陆
用python怎么自动登录一个网站呢?之前我也有过这样的疑问,老自己去填,多麻烦啊,接下来这篇文章将讲解怎么用python2模拟登陆人人网。
一、用fiddler查看登录信息
模拟登陆第一步,用fiddler查看发出访问信息的请求:
网页:
输入多次后,会要求输入验证码:
密码我这里输入的是123,找到这个访问请求:
二、检索相关元素
ok,找到了它的请求参数,下一步,我们检索每一个参数对应的标题,采用谷歌浏览器查看,如用户名部分:
实际上有三个值是由必要传的,如email、password和icode(验证码)
三、撸代码
1,构建session请求
# 构建一个Session对象,可以保存页面COOKIE
sess = requests.Session()
# 请求报头
headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
# 首先获取登录页面,找到需要POST的数据(_xsrf),同时会记录当前网页的COOKIE值
html = sess.get("http://www.renren.com/", headers = headers).text
2,解析出验证码地址
核心代码:bs.select("#verifyPic_login")[0].attrs.get(u'src')
bs = BeautifulSoup(html, 'html.parser')
# 这是验证码
icode = bs.select("#icode")
captcha_url = bs.select("#verifyPic_login")[0].attrs.get(u'src')
print "captcha_url",captcha_url
captcha_data = sess.get(captcha_url, headers=headers).content
3,根据url下载验证码,并手工输入文字
def captcha(captcha_data):
with open("icode.jpg", "wb") as f:
f.write(captcha_data)
text = raw_input("请输入验证码:")
# 返回用户输入的验证码
return text
4,构建data、发送请求
查看下下来的图片:
返回的text可以用作构建data:
data = {
"email":"",
"password":"",
"icode":text
}
email和password填自己的就可以了
# 发送登录需要的POST数据,获取登录后的COOKIE(保存在sess里)
respOnse= sess.post("http://www.renren.com/ajaxLogin/login", data=data, headers=headers)
print response.text
之后再已同一个session发起请求就可以了!