打印变量是个很好的理解程序,调试程序的方法
贴一段利用requests包绕过csrf模拟登陆的代码
获取网页真的有好多种方法,urllib,urllib2,requests,bs4,selenium都可以,我相信还有更多的方法可以获取,解析网页。
#-*- coding: utf-8 -*-
import requests
url_login = \"http://www.heibanke.com/accounts/login\"
url_form = \"http://www.heibanke.com/lesson/crawler_ex03/\"
def post_login(s,url,data):
print data,1
s.get(url)
params = {\'csrfmiddlewaretoken\':s.cookies.get(\'csrftoken\')}
print params,2
params.update(data)
print params,3
print data,4
r = s.post(url,data=params)
return r,s
s = requests.Session()
r,s = post_login(s,url_login,{\'username\':\'test\',\'password\':\'test123\'})
print \'login\',r.status_code
r = s.post(url_form)
print r.text
这样就通过提取cookies和提交隐藏表单,以及利用Session()这样一个会话对象来保持登陆,为后面的试密码做铺垫。
Paste_Image.png
test4.jpg