python请求-正在覆盖用户代理

python请求-正在覆盖用户代理,python,python-requests,Python,Python Requests,我有 我被拒绝了,但这是因为403禁止。我打印了标题,我得到: logindata = { 'username': 'me', 'password': 'blbla' } payload = {'from':'me', 'lang':'en', 'url':csv_url} headers = { 'User-Agent': 'Mozilla/5.0' } api_url = 'http://dev.

我有

我被拒绝了,但这是因为403禁止。我打印了标题,我得到:

    logindata = {
        'username': 'me',
        'password': 'blbla'
    }
    payload = {'from':'me', 'lang':'en', 'url':csv_url}
    headers = {
        'User-Agent': 'Mozilla/5.0'
    }
    api_url = 'http://dev.mypage.com/admin/app/import/'

    with requests.Session() as s:
        s.post(api_url, data=json.dumps(logindata), headers=headers)

        print s.headers

        # An authorised request.
        r = s.get(api_url, params=payload, headers=headers)
为什么我的
“用户代理”:“Mozilla/5.0”
会被覆盖?我错过了什么

头不以这种方式保存在会话中

您需要在每次发出请求时显式传递它们,或者设置一次:

您可以通过检查
response.request.headers
,检查发送的标题是否正确:

with requests.Session() as s:
    s.headers = {'User-Agent': 'Mozilla/5.0'}
另请参见如何实现-每次您在会话对象上设置请求时:

with requests.Session() as s:
    s.headers = {'User-Agent': 'Mozilla/5.0'}

    r = s.post(api_url, data=json.dumps(logindata))
    print(r.request.headers)

如果希望会话为所有请求使用特定的头,则需要在会话上设置这些头,具体如下:

headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict),
s.headers.update(headers)
行将字典添加到会话头中

会话从不复制请求中的信息以用于其他请求。只有来自响应(特别是cookie)的信息被捕获以供重用

有关更多详细信息,请参阅:

会话还可用于向请求方法提供默认数据。这是通过向会话对象上的属性提供数据来实现的


哦,好吧,我不知道,所以我做了
s.post(url,data=json.dumps(loginda),headers={'User-Agent':'Mozilla/5.0'})
,但是如果我print@doniyor好的,您从
s.post()
调用中得到了什么响应?如果省略json.dumps()
调用:
r=s.post(api\u url,data=loginda)
?从
s.post()
我得到403。我正在尝试登录django管理页面。我是不是丢失了csrftoken?@doniyor很可能就是这个。在浏览器中手动执行POST请求时,请检查发送给django admin的POST请求。如果您的理论是正确的,那么您将在那里看到
csrfmiddlewaretoken
参数。
headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict),
with requests.Session() as s:
    s.headers.update(headers)
    s.post(api_url, data=json.dumps(logindata))

    # An authorised request.
    r = s.get(api_url, params=payload)