无法使用请求包登录网站

时间:2015-04-29 20:00:08

标签: python login python-requests

我是网络抓取的新手。我正在尝试使用以下代码登录网站:

urlLogin = 'https://b*********.****n.dk/Authorization/LogOn'
urlData = 'https://b*********.****n.dk//Search/Index'
payload = {
'UserName':'{{username}}',
'Password':'{{a_password}}'
}

with requests.Session() as s:
    s.post(urlLogin, data=payload)
    r = s.get(urlData)

我收到以下错误:

    Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 372, in _make_request
    httplib_response = conn.getresponse(buffering=True)
TypeError: getresponse() got an unexpected keyword argument 'buffering'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 544, in urlopen
    body=body, headers=headers)
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 374, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Python34\lib\http\client.py", line 1162, in getresponse
    raise ResponseNotReady(self.__state)
http.client.ResponseNotReady: Request-sent

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\requests\adapters.py", line 370, in send
    timeout=timeout
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 597, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\util\retry.py", line 245, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\packages\six.py", line 309, in reraise
    raise value.with_traceback(tb)
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 544, in urlopen
    body=body, headers=headers)
  File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 374, in _make_request
    httplib_response = conn.getresponse()
  File "C:\Python34\lib\http\client.py", line 1162, in getresponse
    raise ResponseNotReady(self.__state)
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', ResponseNotReady('Request-sent',))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/Dimitrios/Documents/Dimitris_general/Python/WindCompaniesProject/EnterData.py", line 16, in <module>
    r = s.get(urlData)
  File "C:\Python34\lib\site-packages\requests\sessions.py", line 477, in get
    return self.request('GET', url, **kwargs)
  File "C:\Python34\lib\site-packages\requests\sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python34\lib\site-packages\requests\sessions.py", line 594, in send
    history = [resp for resp in gen] if allow_redirects else []
  File "C:\Python34\lib\site-packages\requests\sessions.py", line 594, in <listcomp>
    history = [resp for resp in gen] if allow_redirects else []
  File "C:\Python34\lib\site-packages\requests\sessions.py", line 196, in resolve_redirects
    **adapter_kwargs
  File "C:\Python34\lib\site-packages\requests\sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python34\lib\site-packages\requests\adapters.py", line 415, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ResponseNotReady('Request-sent',))

可能是什么原因?许多教程都提出了这样做的方法,似乎它在我的案例中并不起作用。

1 个答案:

答案 0 :(得分:0)

使用此代码:

with requests.Session() as s:
p = s.post(urlLogin, data=payload)
print(p.text)
输出是:

[ArgumentException]: The parameters dictionary contains a null entry for parameter &#39;remmemberMe&#39; of non-nullable type &#39;System.Boolean&#39; for method &#39;System.Web.Mvc.ActionResult LogOn(System.String, System.String, Boolean)&#39; in &#39;SalesOptimizer.Controllers.AuthorizationController&#39;. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters

这意味着我不得不再向负载添加一个变量。代码变为:

 payload = {
            'username':"a_username",
            'password':"a_password",
            'remmemberMe': True
            }

 with requests.Session() as s:
            p = s.post(urlLogin, data=payload)

这就是答案。(新问题是输出提供密码不正确的文本。密码是否包含这些字符* >?我可以使用此用户名通过网络登录密码。)