Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求-会话未捕获响应cookie_Python_Session_Cookies_Python Requests - Fatal编程技术网

Python请求-会话未捕获响应cookie

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”,并且有任何方法可以检索它 解决

我不知道该如何描述这一点。我试图使用Python的请求库登录到一个网站,但它似乎没有捕获我登录时的所有cookie,随后对该网站的请求返回到登录页面

我使用的代码如下:(带修订)

查看Chrome中的开发工具。我看到以下情况:

在检查
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运行。再一次,谢谢。你的解决方案比硒更痛苦。