将登录名从 mechanize 转移到 urllib 或 requests
Transfering login from mechanize to urllib or requests
我目前正在尝试将我的一些代码转移到 urllib3 或请求中。 urllib3 是减少导入模块的首选方法。
这是当前可用的代码。
payload = ["<username>", "<password>"
browser = mechanize.Browser()
browser.open(url)
browser.select_form('form1')
browser['j_username'] = payload[0]
browser['j_password'] = payload[1]
browser.submit()
到目前为止我尝试的是
with requests.Session() as session:
#not working
payload = { "j_username" : "<username>", "j_password" : "<password>" }
req = session.post(url, data = payload)
print(req.url)
#also not working
req = session.get(url, auth=("<username>", "<password>") )
print(req.url)
同样无效:
payload = { "lang": "de", "j_username": "<username>", "j_password": "<password>", "_eventId_proceed": "" }
req = session.post(url, data = payload)
我总是得到相同的 url 返回,所以我无法登录。
有没有办法在 urllib / requests 中进行此登录,还是我必须坚持使用机械化?
我也想比较这些解决方案的速度。
我终于找到了解决方案,也许它对其他人也有帮助。
我必须执行一个获取请求并使用该请求中的 url 因为有一个重定向到 login-page 并且你不能直接打开它(我会看到一个页面,你可能会看到这个页面,因为您在浏览安全网站或应用程序时使用了后退按钮...)
#url1 = url that redirects to loginpage
payload = { "lang": "de", "j_username": "<username>", "j_password": "<password>", "_eventId_proceed": "" }
with requests.Session() as session:
loginPage = session.get(url1)
afterLogin = session.post(loginPage.url, data = payload)
wantedPage = session.get(<url of wanted page>)
我目前正在尝试将我的一些代码转移到 urllib3 或请求中。 urllib3 是减少导入模块的首选方法。
这是当前可用的代码。
payload = ["<username>", "<password>"
browser = mechanize.Browser()
browser.open(url)
browser.select_form('form1')
browser['j_username'] = payload[0]
browser['j_password'] = payload[1]
browser.submit()
到目前为止我尝试的是
with requests.Session() as session:
#not working
payload = { "j_username" : "<username>", "j_password" : "<password>" }
req = session.post(url, data = payload)
print(req.url)
#also not working
req = session.get(url, auth=("<username>", "<password>") )
print(req.url)
同样无效:
payload = { "lang": "de", "j_username": "<username>", "j_password": "<password>", "_eventId_proceed": "" }
req = session.post(url, data = payload)
我总是得到相同的 url 返回,所以我无法登录。
有没有办法在 urllib / requests 中进行此登录,还是我必须坚持使用机械化? 我也想比较这些解决方案的速度。
我终于找到了解决方案,也许它对其他人也有帮助。 我必须执行一个获取请求并使用该请求中的 url 因为有一个重定向到 login-page 并且你不能直接打开它(我会看到一个页面,你可能会看到这个页面,因为您在浏览安全网站或应用程序时使用了后退按钮...)
#url1 = url that redirects to loginpage
payload = { "lang": "de", "j_username": "<username>", "j_password": "<password>", "_eventId_proceed": "" }
with requests.Session() as session:
loginPage = session.get(url1)
afterLogin = session.post(loginPage.url, data = payload)
wantedPage = session.get(<url of wanted page>)