Python爬虫:github自动登录,ctfhub自动签到(带验证码)

0x00 写在前面

这次是记录学习过程中关于自动登录的案例,在这几天的学习中发现,很多情况下,我们都只有在登录的情况下才能看到我们想要的数据,所以自动登录是爬虫必不可少的一环

0x01 GitHub的登录

github登录网址:https://github.com/login
github的登录不需要验证码验证,也就不需要定位,直接post就行了,相对简单,就试了试不使用selenium,先用123测试一下发送数据的格式
在session下找到了post的数据
在这里插入图片描述

其中,用红框框起来的几条数据,看起来像是动态生成的,去网页源码里搜索一下
在这里插入图片描述

找到了位置,从而我们就得到了data里的所有数据。值得注意的是,这里是用了cookie在储存数据
在这里插入图片描述

而如果我们的request不带有cookie,登录的时候就会出现…
在这里插入图片描述
不能正常登录,所以我们要使用

session=requests.session()

来为网站创建一个会话对象,这样就能自动生成,储存cookie,从而正常登录,完整代码如下:

from lxml import etree
import requests
url='https://github.com/login'
headers={
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0"}
session=requests.session()#创建会话对象,后面的所有请求都由此对象发出
response=session.get(url=url,headers=headers)
response.encoding='utf-8'
tree=etree.HTML(response.text)
token=tree.xpath('//*[@name="authenticity_token"]/@value')[0]
#gaid=tree.xpath('//*[@class="js-octo-ga-id-input"]/@value')[0]
timestamp=tree.xpath('//*[@name="timestamp"]/@value')[0]
timestampsec=tree.xpath('//*[@name="timestamp_secret"]')[0]
data = {
   
    'commit': 'Sign in',
    'authenticity_token': token,
    'ga_id':'929822435.1570627169',#可以看到本来我写了获取这个值的代码,但是我又发现这个值好像没变过,就直接写在这了
    'login': 'github帐号',
    'password': 'github密码',
    'webauthn-support': 'supported',
    'webauthn-iuvpaa-support':'unsupported',
    'return_to:':'',
    'required_field_05fd':'',#这里的05fd好像每次请求都不一样,但是好像是不影响登录,如果发现无法登录,可以试试post后查看对应参数并修改
    'timestamp':timestamp,
    'timestamp_secret':timestampsec
}
login=session
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值