<p>调查之后,您需要发布到的URL似乎是:<a href="http://54.161.205.225/Project/accounts/login/?next=/Project/" rel="nofollow noreferrer">http://54.161.205.225/Project/accounts/login/?next=/Project/</a></p>
<p>通过查看Chrome开发工具的“网络”选项卡,您可以确定在post请求中需要发送什么。这告诉我们需要发送需要从页面中提取的字段<code>username</code>、<code>password</code>和<code>csrfmiddlewaretoken</code></p>
<p>您可以通过从第一个get请求的响应中提取它来获得它。它存储在页面上,如下所示:</p>
<pre><code><input type="hidden" name="csrfmiddlewaretoken" value="OspZfYQscPMHXZ3inZ5Yy5HUPt52LTiARwVuAxpD6r4xbgyVu4wYbfpgYMxDgHta">
</code></pre>
<p>所以你需要做一些正则表达式来得到它。你会解决的</p>
<p><a href="https://i.stack.imgur.com/GN0Mm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/GN0Mm.png" alt="enter image description here"/></a></p>
<p>所以首先你必须创建一个<code>session</code>。然后加载带有get请求的登录页面。然后将带有登录凭据的post请求发送到同一URL。然后您的会话将获得所需的cookies,从而允许您发布到所需的URL。下面是一个例子</p>
<pre><code>import requests
# Create session
session = requests.session()
# Add user-agent string
session.headers.update({'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) ' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'})
# Get login page
response = session.get('http://54.161.205.225/Project/accounts/login/?next=/Project/')
# Get csrf
# Do something to response.text
# Post to login
response = session.post('http://54.161.205.225/Project/accounts/login/?next=/Project/', data={
'username': 'example123',
'password': 'examplexamplexample',
'csrfmiddlewaretoken': 'something123123',
})
# Post desired data
response = session.post('http://url.url/other_page', data={
'data': 'something',
})
print(response.status_code)
</code></pre>
<p>希望这能让你达到目的。祝你好运</p>
<p>有关更多信息,请查看有关请求的问题:<a href="https://stackoverflow.com/questions/12737740/python-requests-and-persistent-sessions">Python Requests and persistent sessions</a></p>