前言分析目标网站的登录方式

  目标地址:https://github.com/login    

  登录方式做出分析:

      第一,用form表单方式提交信息,

      第二,有csrf_token,

      第三 ,是以post请求发送用户名和密码时,需要第一次get请求的cookie

      第四,登录成功以后,请求其他页面是只需要带第一次登录成功以后返回的cookie就可以。

  

以get发送的请求获取我们想要的token和cookie

代码:

import requests
from bs4 import BeautifulSoup r1 = requests.get('https://github.com/login') soup = BeautifulSoup(r1.text,features='lxml') #生成soup 对象 s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value')
#查到我们要的token r1_cookies = r1.cookies.get_dict() # 下次提交用户名时用的cookie # print(r1_cookies) # print(s1) #结果:: {'logged_in': 'no', '_gh_sess': 'VDFWa2hJWjFMb1hpRUFLRDVhUmc3MXg1Tk02TDhsUnhDMERuNGpyT2Y4STlQZ2xCV1lCZEFhK21wdFR1bkpGYUV0WEJzcDEydWFzcm93
aVc4Nk91Q2JicmtRV0NIQ0lRSWM4aFhrSVFYbCtCczBwdnhVN0YySVJJNUFpQnhyTzNuRkJwNDJZUWxUcEk2M2JkM3VSMDdXVHNOY1htQkthckJQZDJyUVR2RzBNUkU3VnltRVF2U
m1admU3c3YzSGlyVnVZVm0ycnA1eUhET1JRVWNLN0pSbndKWjljMGttNG5URWJ1eU8rQjZXNEMxVEthcGVObDFBY2gvc2ZzWXcvWWZab29wQWJyU0l6cmZscWhBQUlzYTA3dTRtb
3l1S0hDYytHY2V1SUhEWlZvVlZoSWZpTzBjNmlidFF2dzI2bWgtLTJON1lqbm5jWUtSYmtiVEM1clJPakE9PQ%3D%3D--897dbc36c123940c8eae5d86f276dead8318fd6c'}
pRz0wapEbu5shksGCeSN0FijWoU9ALw8EPUsXlqgcw1Ezirl0VbSKvkTYqIe8VhxhPH2H/uzGaV6XX+yjTGoVA==

获取这两个值就可以,进行下一步发送登录请求:

第二步post方式提交用户名密码

 代码::

这个代码接着上面的get请求,只是post请求的部分,

r2 = requests.post(
'https://github.com/session',
data ={
'commit':'Sign in',
'utf8':'✓',
'authenticity_token':s1,
'login':'541756569@qq.com',
'password':'用户名密码' # 填上正确的用户名即可
},
cookies = r1.cookies.get_dict(), # 这里需要第一次的cookie
) print(r2.cookies.get_dict()) # 这个是成功以后的cookie

  

成功以后就返回登录页面的信息。

基于post登录成功后查看个人详情页。

 这里只需要带着登录成功以后的cookie 就可以

  #完整代码

import requests
from bs4 import BeautifulSoup r1 = requests.get('https://github.com/login') soup = BeautifulSoup(r1.text,features='lxml') s1 = soup.find(name='input',attrs={'name':'authenticity_token'}).get('value')
r1_cookies = r1.cookies.get_dict()
print(r1_cookies)
print(s1) r2 = requests.post(
'https://github.com/session',
data ={
'commit':'Sign in',
'utf8':'✓',
'authenticity_token':s1,
'login':'541756569@qq.com',
'password':'密码'
},
cookies = r1.cookies.get_dict(),
) 查看个人详情页 print(r2.cookies.get_dict()) r3 = requests.get(
'https://github.com/13131052183/product', #查看个人的详情页
cookies = r2.cookies.get_dict() ) print(r3.text)

  

最新文章

  1. jQuery为开发插件提拱了两个方法:jQuery.fn.extend(); jQuery.extend();
  2. jshint 一些选项(转载)
  3. Tomcat创建HTTPS访问,java访问https
  4. python爬虫学习-爬取某个网站上的所有图片
  5. Openvswitch原理与代码分析(8): 修改Openvswitch代码添加自定义action
  6. PHP伪造referer突破防盗链
  7. Python学习教程(learning Python)--1.2.4 Python格式化输出科学计数
  8. mysql online ddl2
  9. hdoj 1789 Doing Homework again
  10. FBReader移植日记 第一天
  11. C/C++中的浮点数运算
  12. HDU 4970 Killing Monsters
  13. C++ 文件操作实例
  14. 201621123043 《Java程序设计》第11周学习总结
  15. J2EE进阶(二)从零开始之Struts2
  16. Firemonkey 原生二维码扫描优化
  17. Java (JDK 多版本切换)—— Windows平台
  18. Captcha服务(后续1)
  19. python中 yield的用法和生成器generator的说明
  20. nginx的命令

热门文章

  1. jQuery调用WCF
  2. C# Newtonsoft.Json JObject 操作
  3. 简单的api实现以及动态函数调用
  4. socket 异步接收连接和接收数据
  5. 遵循统一的机器学习框架理解SVM
  6. mysql 1366错误
  7. execl文件读取封装
  8. 使用Cython时遇到的cl.exe的问题
  9. v-bind 绑定属性
  10. Jmeter逻辑控制器: If控制器的解读