Python请求-会话未捕获响应cookie
我不知道该如何描述这一点。我试图使用Python的请求库登录到一个网站,但它似乎没有捕获我登录时的所有cookie,随后对该网站的请求返回到登录页面 我使用的代码如下:(带修订) 查看Chrome中的开发工具。我看到以下情况: 在检查Python请求-会话未捕获响应cookie,python,session,cookies,python-requests,Python,Session,Cookies,Python Requests,我不知道该如何描述这一点。我试图使用Python的请求库登录到一个网站,但它似乎没有捕获我登录时的所有cookie,随后对该网站的请求返回到登录页面 我使用的代码如下:(带修订) 查看Chrome中的开发工具。我看到以下情况: 在检查r.cookies之后,似乎只有PHPSESSID被捕获,没有任何amember\u nr cookie的迹象 PyCharm中的值仅显示: {requestScookeJar:1} 为什么此代码无法保存“amember\u nr”,并且有任何方法可以检索它 解决
r.cookies
之后,似乎只有PHPSESSID被捕获,没有任何amember\u nr cookie的迹象
PyCharm中的值仅显示:
{requestScookeJar:1}
为什么此代码无法保存“amember\u nr”,并且有任何方法可以检索它
解决方案:
看来我能让这段代码正常工作的唯一方法是使用Selenium,选择页面上的元素并自动键入/单击。以下代码生成所需的结果
from seleniumrequests import Chrome
driver = Chrome()
driver.get('http://www.website.co.uk')
username = driver.find_element_by_xpath("//input[@name='amember_login']")
password = driver.find_element_by_xpath("//input[@name='amember_pass']")
username.send_keys("username")
password.send_keys("password")
driver.find_element_by_xpath("//input[@type='submit']").click() # Page is logged in and all relevant cookies saved.
您可以尝试以下方法:
with requests.Session() as s:
s.get('https://www.website.co.uk/login')
r = s.post('https://www.website.co.uk/login', data={
'amember_login': 'username',
'amember_password': 'password'
})
get请求将设置所需的cookies。您可以尝试以下操作:
with requests.Session() as s:
s.get('https://www.website.co.uk/login')
r = s.post('https://www.website.co.uk/login', data={
'amember_login': 'username',
'amember_password': 'password'
})
get请求将设置所需的Cookie。仅供参考,我将使用Burpuite之类的工具来捕获发送到服务器的所有数据,并整理出所需的标头等。。。有时,人们/服务器通过JAVA或不可靠的脚本检查、设置cookie,甚至看到JAVA混淆和阻止不在白名单中的代理标记等。。。很可能是服务器丢失了一些头,无法为您提供cookie 此外,还可以让Python使用burp作为代理,这样就可以准确地看到发送到服务器的内容和响应
(代理支持)仅供参考,我会使用BurpSuite之类的工具来捕获发送到服务器的所有数据,并整理出需要的头文件等。。。有时,人们/服务器通过JAVA或不可靠的脚本检查、设置cookie,甚至看到JAVA混淆和阻止不在白名单中的代理标记等。。。很可能是服务器丢失了一些头,无法为您提供cookie 此外,还可以让Python使用burp作为代理,这样就可以准确地看到发送到服务器的内容和响应
(代理支持)可能是由JavaScript设置的?有没有办法检索?我做了更多的挖掘,这似乎是请求库的某种缺陷,其中cookie在重定向时丢失了?请求不执行JavaScript您可以使用请求html或Selenium都应该执行JavaScript,您可以共享URL吗?很遗憾,无法共享URL,我会被淘汰的:/I我认为Selenium会被推荐,所以我现在尝试一下,如果它有效,将更新问题。只是使用Selenium请求在Selenium中尝试了同样的事情,这次我没有得到任何cookie。可能是通过JavaScript设置的?有没有办法检索到它?我做了更多的挖掘,这似乎是请求库的某种缺陷,其中cookie在重定向时丢失了?请求不执行JavaScript您可以使用请求html或Selenium都应该执行JavaScript,您可以共享URL吗?很遗憾,无法共享URL,我会感到厌烦的:/I我认为应该推荐Selenium,所以我现在尝试一下,如果它有效,将更新问题。只是使用Selenium请求在Selenium中尝试了相同的事情,这次我没有得到任何cookie。这肯定会起作用…:-)我得到的信息比以前多得多。我会试试这个,如果我能得到同样的结果,我会将它标记为一个答案。第一个请求将设置响应头,并将在进一步的请求中发送到服务器。很乐意帮助:)是的,我已经用后续的请求对它进行了测试,并且我得到了所有我需要的数据,可以通过lxml运行。再一次,谢谢。您的解决方案比硒的痛苦小。这肯定有作用…:-)我得到的信息比以前多得多。我会试试这个,如果我能得到同样的结果,我会将它标记为一个答案。第一个请求将设置响应头,并将在进一步的请求中发送到服务器。很乐意帮助:)是的,我已经用后续的请求对它进行了测试,并且我得到了所有我需要的数据,可以通过lxml运行。再一次,谢谢。你的解决方案比硒更痛苦。