Python 请求 - 管理 cookie

标签 python cookies python-requests

我正在尝试使用请求(和 bs4)从站点自动获取一些内容

我有一个获取 cookie 的脚本:

def getCookies(self):
    username = 'username'
    password = 'password'
    URL = 'logonURL'
    r = requests.get(URL, auth=('username', 'password'))
    cookies = r.cookies

cookie 的转储看起来像:

<<class 'requests.cookies.RequestsCookieJar'>[<Cookie ASP.NET_SessionId=yqokjr55ezarqbijyrwnov45 for URL.com/>, <Cookie BIGipServerPE_Journals.lww.com_80=1440336906.20480.0000 for URL.com/>, <Cookie JournalsLockCookie=id=a5720750-3f20-4207-a500-93ae4389213c&ip=IP address for URL.com/>]>

但是当我将 cookie 对象传递给下一个 URL 时:

 soup = Soup(s.get(URL, cookies = cookies).content)

它不工作 - 我可以通过倾倒汤看到我没有正确地向网络服务器提供我的凭据

我尝试运行请求 session :

def getCookies(self):
    self.s = requests.session()
    username = 'username'
    password = 'password'
    URL = 'logURL'
    r = self.s.get(URL, auth=('username', 'password'))

和我一样没有快乐。

当我访问第二页时,我通过 FF 中的 liveHttp 查看了标题,并看到了一个非常不同的形式:

Cookie: WT_FPC=id=264b0aa85e0247eb4f11355304127862:lv=1355317068013:ss=1355314918680; UserInfo=Username=username; BIGipServerPE_Journals.lww.com_80=1423559690.20480.0000; PlatformAuthCookie=true; Institution=ReferrerUrl=http://logonURL.com/?wa=wsignin1.0&wtrealm=urn:adis&wctx=http://URL.com/_layouts/Authenticate.aspx?Source=%252fpecnews%252ftoc%252f2012%252f06440&token=method|ExpireAbsolute; counterSessionGuidId=6e2bd57f-b6da-4dd4-bcb0-742428e08b5e; MyListsRefresh=12/13/2012 12:59:04 AM; ASP.NET_SessionId=40a04p45zppozc45wbadah45; JournalsLockCookie=id=85d1f38f-dcbb-476a-bc2e-92f7ac1ae493&ip=10.204.217.84; FedAuth=77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48U2VjdXJpdHlDb250ZXh0VG9rZW4gcDE6SWQ9Il9mMGU5N2M3Zi1jNzQ5LTQ4ZjktYTUxNS1mODNlYjJiNGNlYzUtNEU1MDQzOEY0RTk5QURCNDFBQTA0Mjc0RDE5QzREMEEiIHhtbG5zOnAxPSJodHRwOi8vZG9jcy5vYXNpcy1vcGVuLm9yZy93c3MvMjAwNC8wMS9vYXNpcy0yMDA0MDEtd3NzLXdzc2VjdXJpdHktdXRpbGl0eS0xLjAueHNkIiB4bWxucz0iaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvd3Mtc3gvd3Mtc2VjdXJlY29udmVyc2F0aW9uLzIwMDUxMiI+PElkZW50aWZpZXI+dXJuOnV1aWQ6ZjJmNGY5MGItMmE4Yy00OTdlLTkwNzktY2EwYjM3MTBkN2I1PC9JZGVudGlmaWVyPjxJbnN0YW5jZT51cm46dXVpZDo2NzMxN2U5Ny1lMWQ3LTQ2YzUtOTg2OC05ZGJhYjA3NDkzOWY8L0luc3RhbmNlPjwvU2VjdXJpdHlDb250ZXh0VG9rZW4+

出于显而易见的原因,我已经从问题中删除了用户名、密码和 URLS。

我是否遗漏了一些明显的东西?是否有不同/正确的方法来捕获 cookie - 我正在使用的当前方法不起作用。

编辑:

这是 session 代码的独立版本:

s = requests.session()
username = 'username'
password = 'password'
URL = 'logonURL.aspx'
r = s.get(URL, auth=('username', 'password'))
URL = r"URL.aspx"
soup = Soup(s.get(URL).content)

阅读汤的转储,我可以在 html 中看到它告诉我我没有访问权限 - 此字符串仅在您未登录时通过浏览器出现。

最佳答案

我遇到了类似的问题,并在这个问题上找到了帮助。 session jar 是空的,为了实际获取我需要使用 session 的 cookie。

session = requests.session()
p = session.post("http://example.com", {'user':user,'password':password})
print 'headers', p.headers
print 'cookies', requests.utils.dict_from_cookiejar(session.cookies)
print 'html',  p.text

关于Python 请求 - 管理 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854735/

相关文章:

python - OpenCV 和 Python : Cover a colored mask over a image

python - ipython 笔记本小部件中的交互式绘图放置

asp.net - cookie中的 "killmenothing"是什么意思?

javascript - 设置cookie并显示cookie的值

php - 使用 jQuery(view) 创建的 cookie 在第一次尝试时无法在 php(controller) 中访问

python - 试图在谷歌云中查找已部署的 python 函数的当前项目 ID 会出错

Python 简化 HTML 表格

python - Tkinter 从外部函数更改类中的小部件?

python - 如何使用授权类型为 'Client Credentials' 的请求 OAuthlib ?

python - TensorFlow 服务 : How to get prediction, ModelSpec 缺失