2017-09-16 99 views
1

我有一些麻烦,使用Python请求模块验证自己到PJ网站进行身份验证。我的代码如下:的Python:无法使用请求模块

import requests 

with requests.Session() as s: 
    s.auth = ("my_email", "my_password") 
    r = s.get("https://www.example.com/") 

不过,我收到一个响应这表明我还没有登录它是根本不可能做到这一点?我错过了什么(例如CSRF令牌)?

编辑:我做了一些闲逛的时候看到我手动登录会发生什么你可以看到请求的screengrab我的浏览器发送的位置:PJ Login Request

+2

你可能需要张贴到登录终点 - 如果papajohns只是使用基本的HTTP验证我会感到惊讶......(这意味着你需要查看网页源代码 - 识别的形式,目标URL和构建效仿登录) –

+0

@JonClements的图像在我的编辑适当的请求显示表格数据(即目标URL,用户通),但是,我有点失去了在搞清楚什么类型的身份验证使用的。有什么建议? –

+0

您通常不会使用任何...您使用您的用户名/密码将您的用户名/密码作为适当的POST请求发送到requests.Session(),然后您可能会收到一个cookie,这样re - 使用会话进行进一步的请求意味着您已经登录... –

回答

1

想通了,下面乔恩的指导意见:

with requests.Session() as s: 
    payload = {'user':'my_email','pass':'my_password', 'target':'/order/menu'} 
    r = s.post("https://www.example.com/order/signin", data=payload) 

我已经从请求(使用我上面的编辑screengrab)计算出正确的有效载荷,但我把它发送到错误的位置(即主页而不是用户登录页面)。

0

与邮政法未明文如果发送尝试使用http。

With https BOTH GET and POST是安全发送而不是明文。

import requests 

with requests.Session() as s: 
    s.auth = ("my_email", "my_password") 
    r = s.post("https://www.papajohns.com/") 


>>> r 
>>> <Response [200]> 
+0

尝试了这一点,但不幸的是,它给了我与使用GET请求相同的结果。 –

+1

通过https的get方法不是以明文形式发送。 – pvg