由于HTTP协议是无状态协议,所以服务器与客户端通过HTTP协议通讯时,服务器不能记录客户端的信息。
为了解决这个问题,通过饼干和会话技术来实现。
-
<李>饼干保存在客户端中李>
<李>会话保存在服务器中李>
一般饼干所具有的属性,包括:
域:域,表示当前饼干所属于哪个域或子域下面。
对于服务器返回的set - cookie中,如果没有指定域的值,那么其域的值是默认为当前所提交的http的请求所对应的主域名的。比如访问http://www.example.com,返回一个cookie,没有指名域值,那么其为值为默认的www.example.com。
路径:表示饼干的所属路径。
到期时间/信息:表示了饼干的有效期.expire的值,是一个时间,过了这个时间,该饼干就失效了。或者是用信息指定当前饼干是在多长时间之后而失效。如果服务器返回的一个cookie,没有指定其到期时间,那么表明此cookie有效期只是当前的会话,即是会话cookie,当前会话会话结束后,就过期了。对应的,当关闭(浏览器中)该页面的时候,此cookie就应该被浏览器所删除了。
安全:表示该cookie只能用https传输。一般用于包含认证信息的饼干,要求传输此cookie的时候,必须用https传输。
httponly:表示此cookie必须用于http或https传输。这意味着,浏览器脚本,比如javascript中,是不允许访问操作此cookie的。
得到饼干
#从百度首页登录百度账号,并获取饼干 从硒进口webdriver 从进口睡眠时间 进口json #启动丁目浏览器并访问百度首页 选择=webdriver.ChromeOptions () option.add_argument (“——start-maximized”) 驱动=webdriver.Chrome(选项=选项) drive.get (“http://www.baidu.com”) 打印(drive.title) #点击“登录” el=drive.find_element_by_link_text(“登录”) eled.click () 睡眠(2) #点击”用户名登录” namelogin=drive.find_element_by_css_selector (“p.tang-pass-footerBarULogin”) namelogin.click () 睡眠(2) #输入用户名:密码并登录 用户名=drive.find_element_by_id (“TANGRAM__PSP_10__userName”) username.send_keys (“* * * * * * * *”) 睡眠(1) 密码=drive.find_element_by_id (“TANGRAM__PSP_10__password”) password.send_keys (“* * * * * * * *”) 睡眠(1) 提交=drive.find_element_by_id (“TANGRAM__PSP_10__submit”) submit.click () 睡眠(3) #获取网站饼干 diccookie=drive.get_cookies () 弗兰克-威廉姆斯=开放(“baiducookie.txt”、“w”) json.dump (diccookie,弗雷德里克) fw.close ()
从硬盘读取饼干,加入到请求请求发送服务器。
导入的时间 进口json 启动丁目浏览器并访问百度首页 选择=webdriver.ChromeOptions () option.add_argument (“——start-maximized”) 驱动=webdriver.Chrome(选项=选项) drive.get (“http://www.baidu.com”) 打印(drive.title) fr=开放(“baidu_cookie.txt”、“r”) cookielist=json.load (fr) fr.close () 饼干在cookielist: drive.add_cookie(饼干) 睡眠(5) drive.get (“http://www.baidu.com”) drive.refresh ()
通过饼干登录百度失败:
信息:无法设置cookie
引用>
信息:无效的论点:无效的“到期”
到此这篇关于python硒操作饼的实现的文章就介绍到这了,更多相关python硒操作饼内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
python硒操作饼的实现