Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何登录到可选择登录的页面_Python_Python Requests - Fatal编程技术网

Python 如何登录到可选择登录的页面

Python 如何登录到可选择登录的页面,python,python-requests,Python,Python Requests,我正试图登录到一个网页,但问题是——据我所知——我的用户名和密码没有通过post请求 到目前为止,我已经尝试: with requests.Session() as s: p = s.post('http://www.marinetraffic.com/en/users/ajax_user_menu?', headers=user_agent1, data=payload) r = s.get('http://www.marinetraffic.com/en/ais/index/

我正试图登录到一个网页,但问题是——据我所知——我的用户名和密码没有通过
post
请求

到目前为止,我已经尝试:

with requests.Session() as s:
    p = s.post('http://www.marinetraffic.com/en/users/ajax_user_menu?', headers=user_agent1, data=payload)
    r = s.get('http://www.marinetraffic.com/en/ais/index/port_moves/all/include_anchs:yes/ship_type:7/_:3525d580eade08cfdb72083b248185a9/in_transit:yes/time_interval:1474912018_1474998300/per_page:50/port:2341/portname:MUMBAI')
其中,
user-agent
是我的用户代理,
payload
是我的有效登录凭据。通过
post
get
请求,我得到了
200
响应,但是我看到的页面与我没有登录的页面相同,即结果没有按照URL指示的方式进行过滤


如何确保已登录?

请尝试以下操作:

payload={
    '_method':'POST',
    'email':your email,
    'password':your passwd,
    'is_ajax':True
}

p = s.post('http://www.marinetraffic.com/en/users/ajax_login', headers=user_agent1, data=payload)

试试这个:

payload={
    '_method':'POST',
    'email':your email,
    'password':your passwd,
    'is_ajax':True
}

p = s.post('http://www.marinetraffic.com/en/users/ajax_login', headers=user_agent1, data=payload)

这实际上是您发布的完全错误的url,您需要发布到并设置正确的标题:

data = [("_method", (None, "POST")), ("data[email]", (None, "you@mail.com")),
        ("data[password]", (None, "pass"))]
with requests.Session() as s:

    s.headers.update({"User-Agent": "Mozilla/5.0 (X11; Linux x86_64)",
                  "X-Requested-With": "XMLHttpRequest"})
    p = s.post("https://www.marinetraffic.com/en/users/ajax_login", files=data)
    print(p.content)
    print(s.get("http://www.marinetraffic.com/en/ajax_user_settings/get_user_settings").json())
为了记录在案,这也会起作用:

with requests.Session() as s:
    data = dict(email="you@mail.com", password="pass", _method="POST")
    s.headers.update({"User-Agent": "Mozilla/5.0 (X11; Linux x86_64)",
                  "X-Requested-With": "XMLHttpRequest"})
    p = s.post("https://www.marinetraffic.com/en/users/ajax_login", data=data)
    print p.content
    print(s.get("http://www.marinetraffic.com/en/ajax_user_settings/get_user_settings").json())

这实际上是您发布的完全错误的url,您需要发布到并设置正确的标题:

data = [("_method", (None, "POST")), ("data[email]", (None, "you@mail.com")),
        ("data[password]", (None, "pass"))]
with requests.Session() as s:

    s.headers.update({"User-Agent": "Mozilla/5.0 (X11; Linux x86_64)",
                  "X-Requested-With": "XMLHttpRequest"})
    p = s.post("https://www.marinetraffic.com/en/users/ajax_login", files=data)
    print(p.content)
    print(s.get("http://www.marinetraffic.com/en/ajax_user_settings/get_user_settings").json())
为了记录在案,这也会起作用:

with requests.Session() as s:
    data = dict(email="you@mail.com", password="pass", _method="POST")
    s.headers.update({"User-Agent": "Mozilla/5.0 (X11; Linux x86_64)",
                  "X-Requested-With": "XMLHttpRequest"})
    p = s.post("https://www.marinetraffic.com/en/users/ajax_login", data=data)
    print p.content
    print(s.get("http://www.marinetraffic.com/en/ajax_user_settings/get_user_settings").json())

谢谢,但是我一直收到
响应[403]
,除非我包含
用户代理。我应该把它放在
数据中的什么地方呢
?它似乎还没有登录。可能是因为登录在给定的URL上不可用?我认为用户名和密码传递不正确。是吗?@345243lkj,请看编辑,我使用了您问题中的内容,但没有验证url,您需要设置
X-request-With
标题并发布正确的url。我已经添加了这两种工作方法,但是我一直得到
响应[403]
,除非我包含
用户代理。我应该把它放在
数据中的什么地方呢
?它似乎还没有登录。可能是因为登录在给定的URL上不可用?我认为用户名和密码传递不正确。是吗?@345243lkj,请看编辑,我使用了您问题中的内容,但没有验证url,您需要设置
X-request-With
标题并发布正确的url。我已经添加了这两种工作方法,虽然这个代码片段可以解决这个问题,但确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因。虽然此代码片段可以解决问题,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。