Python请求中的空RequestScookeJar
我正在使用Python请求模块Python请求中的空RequestScookeJar,python,cookies,python-requests,httprequest,instagram,Python,Cookies,Python Requests,Httprequest,Instagram,我正在使用Python请求模块 >>> import requests >>> s1 = requests.Session() >>> r1 = s1.get("https://www.facebook.com/") >>> r1.cookies <RequestsCookieJar[Cookie(version=0, name='fr', ... ]> i、 e.requestScookeJar是空的,但它应
>>> import requests
>>> s1 = requests.Session()
>>> r1 = s1.get("https://www.facebook.com/")
>>> r1.cookies
<RequestsCookieJar[Cookie(version=0, name='fr', ... ]>
i、 e.requestScookeJar
是空的,但它应该返回一些东西
有人能解释一下为什么会这样吗
谢谢。这是因为instagram。当您首先打开instagram时,它不会向您发送cookies,您必须登录,或者再次发出get请求 更新:当您想要登录并想要csrf令牌时,有以下方法:
import json
import requests
import lxml.html
def get_csrf_token(content):
xpath_data = lxml.html.fromstring(content).xpath('/html/body/script[1]/text()')[0]
raw_json = xpath_data[xpath_data.find('{'):-1]
return json.loads(raw_json)["config"]["csrf_token"]
def get_main_page():
session = requests.Session()
content = session.get('https://instagram.com')
csrf_token = get_csrf_token(content.content)
header = {'x-csrftoken' : csrf_token,
'x-requested-with' : 'XMLHttpRequest',
'User-Agent' : "Your user agent there",
"referer" : 'https://instagram.com',
"cookie" : "ig_cb=1",
"origin" : 'https://instagram.com'}
session.headers.update(header)
我假设您可以编写“POST”方法来通过登录传递信息。响应头是什么?@KlausD。
r2的响应头是:{'Content-Type':'text/html','X-Frame-Options':'SAMEORIGIN','Cache Control':'private,no Cache,no store,must revalidate','Pragma':'no Cache','Expires':'Sat,Jan 2000 00:00:00 GMT','Vary':'Cookie,Accept Language,Accept Encoding','Content Encoding':'gzip','Date:'Wed,2018年5月30日11:06:59 GMT','Strict-传输安全“:”最大年龄=86400“,”连接“:”保持活动状态“,”内容长度“:”5528'}
若我两次收到请求,我仍然有空的requestscookejar
,为了登录,你们需要csrftoken
,它是第一次收到请求的cookies附带的。那个不是真的!你们可以取回csrftoken。我会更新我的答案好的,我得到了。问题是我错过了的“cookie”:“ig\u cb=1”
在我的请求头中。它是干什么用的?GET-resquest返回一个非空的RequestScookejar
。因此不需要刮取页面并查找csrf\u令牌。
import json
import requests
import lxml.html
def get_csrf_token(content):
xpath_data = lxml.html.fromstring(content).xpath('/html/body/script[1]/text()')[0]
raw_json = xpath_data[xpath_data.find('{'):-1]
return json.loads(raw_json)["config"]["csrf_token"]
def get_main_page():
session = requests.Session()
content = session.get('https://instagram.com')
csrf_token = get_csrf_token(content.content)
header = {'x-csrftoken' : csrf_token,
'x-requested-with' : 'XMLHttpRequest',
'User-Agent' : "Your user agent there",
"referer" : 'https://instagram.com',
"cookie" : "ig_cb=1",
"origin" : 'https://instagram.com'}
session.headers.update(header)