使用python请求模块在Github中创建经过身份验证的会话

使用python请求模块在Github中创建经过身份验证的会话,python,rest,github,python-requests,Python,Rest,Github,Python Requests,我的目标是在github中创建一个经过身份验证的会话,这样我就可以使用高级搜索(它将功能限制为未经身份验证的用户)。目前,我收到一个来自“什么?你的浏览器出现了意外情况”的帖子请求的网页响应。如果问题仍然存在,请与我们联系 下面是我用来完成任务的代码 import requests from lxml import html s = requests.Session() payload = (username, password) _ = s.get('https://www.github.c

我的目标是在github中创建一个经过身份验证的会话,这样我就可以使用高级搜索(它将功能限制为未经身份验证的用户)。目前,我收到一个来自“什么?你的浏览器出现了意外情况”的帖子请求的网页响应。如果问题仍然存在,请与我们联系

下面是我用来完成任务的代码

import requests
from lxml import html

s = requests.Session()
payload = (username, password)
_ = s.get('https://www.github.com/login')
p = s.post('https://www.github.com/login', auth=payload)

url = "https://github.com/search?l=&p=0&q=language%3APython+extension%3A.py+sklearn&ref=advsearch&type=Code"
r = s.get(url, auth=payload)
text = r.text
tree = html.fromstring(text)

我所尝试的可能吗?我宁愿不使用github v3 api,因为它的速率是有限的,我想自己做更多的高级搜索。谢谢

如评论中所述,github使用post数据进行身份验证,因此您应该在参数中包含您的凭据。
您必须提交的元素包括
'login'
'password'
,以及
'authenticity\u token'
'authenticity\u token'
的值是动态的,但是您可以从
'/login'
中刮取它
最后将
数据
提交到
/session
,您应该拥有一个经过身份验证的会话

s = requests.Session()
r = s.get('https://www.github.com/login')
tree = html.fromstring(r.content)
data = {i.get('name'):i.get('value') for i in tree.cssselect('input')}
data['login'] = username
data['password'] = password
r = s.post('https://github.com/session', data=data)

我假设您需要OAuth登录,但我可能错了谢谢您的响应,我会检查一下。您尝试使用HTTP基本身份验证,但GitHub使用基于表单的登录机制。您需要检查登录页面,以确定您应该
向哪个端点发布带有必要字段(可能包括登录表单本身中的静态字段)的响应