gpt4 book ai didi

python模拟登陆网站的示例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python模拟登陆网站的示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

使用已有cookie登陆

使用浏览器登陆,获取浏览器中的cookie信息,来进行登陆.

我们以博客园为例,先登录博客园账号。我们访问随笔列表,在控制台我们可以看到我们登陆后浏览器的cookie 。

python模拟登陆网站的示例

剔除一些数据统计及分析的cookie,剩下的就是登陆可能需要的.CNBlogsCookie和.Cnblogs.AspNetCore.Cookies 。

  1. # _ga google分析 cookie
  2. # UM_distinctid 友盟cookie
  3. # CNZZxxx CNZZcookie
  4. # __utma,__utmc,__utmz google统计网站
  5. # Hm_lvt_xxx 百度统计网站
  1. import urllib.request
  2.  
  3. url = 'https://i.cnblogs.com/posts'
  4.  
  5. user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
  6.  
  7. #浏览器登录后得到的cookie,也就是刚才复制的字符串
  8. cookie_str = '.CNBlogsCookie=xxx; .Cnblogs.AspNetCore.Cookies=xxx'
  9.  
  10. headers = {
  11. 'User-Agent': user_agent,
  12. 'cookie':cookie_str
  13. }
  14.  
  15. req = urllib.request.Request(url,headers=headers)
  16. resp = urllib.request.urlopen(req).read().decode('utf-8')
  17.  
  18. print(resp)

python模拟登陆网站的示例

登陆获取cookie

登陆的表单一般是使用的form data,现在也有些表单使用request payload使用json格式传参.

form data如药智网 。

python模拟登陆网站的示例

request payload如博客园 。

python模拟登陆网站的示例

form data

博客园的登陆需要拖动验证所以略过。我们以药智网为例,我们打开控制台可以看到登陆需要传的表单参数,这里是使用的form data表单。我们模拟登陆后获取到登陆后的cookie,然后访问登录后的个人中心页面.

python模拟登陆网站的示例

  1. import urllib.request
  2. import http.cookiejar
  3.  
  4. url = 'https://www.yaozh.com/login'
  5.  
  6. user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
  7.  
  8. # formData数据
  9. data = {'username': '用户名',
  10. 'pwd': '密码',
  11. 'formhash': 'C3086BBA84',
  12. 'backurl': 'https%3A%2F%2Fwww.yaozh.com%2F'}
  13.  
  14. post_data = urllib.parse.urlencode(data).encode('utf-8')
  15.  
  16. # 请求头设置
  17. headers = {
  18. 'User-Agent': user_agent
  19. }
  20.  
  21. # 构造登陆请求
  22. req = urllib.request.Request(url, headers=headers, data=post_data)
  23.  
  24. # cookie
  25. cookie = http.cookiejar.CookieJar()
  26.  
  27. # 构造一个opener携带登录后的cookie
  28. opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
  29.  
  30. # 发送登陆请求
  31. resp = opener.open(req)
  32.  
  33. print(resp)
  34.  
  35. # 登录后个人中心
  36. url = 'https://www.yaozh.com/member/'
  37.  
  38. # 构造访问请求
  39. req = urllib.request.Request(url, headers=headers)
  40.  
  41. resp = opener.open(req).read().decode('utf-8')
  42.  
  43. print(resp)

python模拟登陆网站的示例

request payload

如果登陆需要request payload我们需要将参数转为json字符串并在头部设置Content-Type 。

  1. import json
  2. ...
  3.  
  4. data = {'loginType': '1',
  5. 'pwdOrVerifyCode': '密码',
  6. 'userIdentification': '账号',
  7. 'uaToken': '',
  8. 'webUmidToken':''}
  9.  
  10. headers = {
  11. 'Content-Type': 'application/json;charset=UTF-8',
  12. 'User-Agent': user_agent
  13. }
  14.  
  15. req = urllib.request.Request(url, headers=headers, data=json.dumps(data))
  16. ...

登陆后用session保持登陆状态

我们用requests模块的Session对象来保存回话信息 。

  1. import requests
  2.  
  3. url = 'https://www.yaozh.com/login'
  4.  
  5. user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
  6.  
  7. # formData数据
  8. data = {'username': 'chenjy1225',
  9. 'pwd': '19931225yjy',
  10. 'formhash': 'C3086BBA84',
  11. 'backurl': 'https%3A%2F%2Fwww.yaozh.com%2F'}
  12.  
  13. #构造Session
  14. session = requests.Session()
  15.  
  16. # 发送post请求
  17. resp = session.post(url, data)
  18.  
  19. # 登录后个人中心
  20. url = 'https://www.yaozh.com/member/'
  21.  
  22. # 发送请求访问个人中心
  23. resp = session.get(url).content.decode('utf-8')
  24.  
  25. print(resp)

python模拟登陆网站的示例

调用浏览器登陆

我们也可以在程序中调用一个浏览器来访问登陆网站。在python中使用Selenium库就能轻松实现调用浏览器,被控制的浏览器可以是chrome、firefox等。 以前较常用的还是PhantomJS但是PhantomJS被python弃用了.

UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless ' 。

firefox对应的geckodriver 。

chrome对应的chrnpm.taobao.org/mirrors/chromedriveromedriver 。

1.下载Selenium、firefox浏览器及firefox驱动.

2.将下载的firefox驱动geckodriver放在firefox浏览器安装目录 。

3.将firefox浏览器安装目录添加到path中 。

4.重启ide 。

我们找到需要登陆时候输入的元素id及登陆button id.

python模拟登陆网站的示例

  1. from selenium import webdriver
  2. import time
  3.  
  4. # 新建selenium浏览器对象,后面是geckodriver.exe下载后本地路径
  5. browser = webdriver.Firefox()
  6.  
  7. url = 'https://www.yaozh.com/login'
  8.  
  9. # 浏览器访问登录页面
  10. browser.get(url)
  11.  
  12. # 等待3s用于加载脚本文件
  13. browser.implicitly_wait(3)
  14.  
  15. # 输入用户名
  16. username = browser.find_element_by_id('username')
  17. username.send_keys('chenjy1225')
  18.  
  19. # 输入密码
  20. password = browser.find_element_by_id('pwd')
  21. password.send_keys('19931225yjy')
  22.  
  23. # 点击登录按钮
  24. login_button = browser.find_element_by_id('button')
  25. login_button.submit()
  26.  
  27. # 网页截图
  28. browser.save_screenshot('screenshot.png')
  29.  
  30. # 强制等待5s,等待登录后的跳转
  31. time.sleep(5)
  32.  
  33. url = 'https://www.yaozh.com/member/'
  34.  
  35. browser.get(url)
  36.  
  37. # 网页截图个人中心
  38. browser.save_screenshot('screenshot1.png')
  39.  
  40. # 关闭浏览器
  41. browser.quit()

screenshot.png:

python模拟登陆网站的示例

screenshot1.png:

python模拟登陆网站的示例

以上就是python模拟登陆网站的示例的详细内容,更多关于python模拟登陆网站的资料请关注我其它相关文章! 。

原文链接:https://www.cnblogs.com/chenjy1225/p/11758761.html 。

最后此篇关于python模拟登陆网站的示例的文章就讲到这里了,如果你想了解更多关于python模拟登陆网站的示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com