解决问题:每次密码都是变化的,无法通过账号密码登录
(总不能每次去fiddler复制吧????)
解决思路:
1.先用selenium调用浏览器(不会selenium的自己想办法了),
2.登录后从浏览器里面抓取cookies
3.把cookies传给s
4.这样就成功成功了
如果登录有验证码怎么办?比如:博客园
参考这篇:http://www.cnblogs.com/yoyoketang/p/8610779.html
每次都会启动浏览器界面,不想看到浏览器启动怎么办?
解决办法1:用chrome的headless模式 http://www.cnblogs.com/yoyoketang/p/8078873.html
解决办法2:用phantomjs浏览器(不建议,坑多)
from selenium import webdriver
import requests
import time
driver = webdriver.Firefox()
url = 'http://127.0.0.1/zentao/user-login.html'
driver.get(url)
# 先登录
driver.find_element_by_id("account").send_keys("admin")
driver.find_element_by_name("password").send_keys("123456")
driver.find_element_by_id("keepLoginon").click() # 勾选保持登录
driver.find_element_by_id("submit").click()
time.sleep(3)
allcookies = driver.get_cookies() # 获取浏览器cookies
print("获取到登录后的cookies:%s" % allcookies)
# 把抓取的cookies添加到s中
s = requests.session()
def add_cookies(allcook):
'''往session添加cookies'''
try:
# 添加cookies到CookieJar
c = requests.cookies.RequestsCookieJar()
for i in allcook:
c.set(i["name"], i['value'])
s.cookies.update(c) # 更新session里cookies
except Exception as msg:
print(u"添加cookies的时候报错了:%s" % str(msg))
# 调用添加cookies函数
add_cookies(allcookies)
print("打印s里面是否添加成功了")
print(s.cookies)
# 访问一个登录之后的页面,看是不是能访问了
r1 = s.get("http://127.0.0.1/zentao/my/")
print(r1.content.decode("utf-8"))