gpt4 book ai didi

Python Mechanize 登录网站

转载 作者:太空狗 更新时间:2023-10-30 00:52:15 26 4
gpt4 key购买 nike

我正在尝试使用 Python 和 Mechanize 登录网站,但是,在尝试让 POST 数据按我想要的方式运行时遇到了麻烦。

本质上,我想使用 mechanize 和 Python 复制它:

wget --quiet --save-cookies cookiejar --keep-session-cookies --post-data "action=login&login_nick=USERNAME&login_pwd=PASSWORD" -O outfile.htm http://domain.com/index.php

表单如下所示:

<login POST http://domain.com/index.php application/x-www-form-urlencoded
<TextControl(login_nick=USERNAME)>
<PasswordControl(login_pwd=PASSWORD)>
<CheckboxControl(login_auto=[1])>
<SubmitButtonControl(<None>=) (readonly)>>

设置适当的值并提交表单不是问题,但省去了“action=login”部分。

response = self.browser.open(self.url+"/index.php")
self.browser.select_form(name="login")

self.browser["login_nick"] = self.encoded_username
self.browser["login_pwd"] = self.encoded_password

self.browser.method = "POST"

response = self.browser.open(self.browser.submit())

print (response.read())

现在的问题是,如何添加 action=login 部分?

编辑:好的,所以我添加了一个名为action 的隐藏字段并将值设置为login。使用 Wireshark 分析 TCP 流,POST 数据确实按照应有的方式构建。但是,mechanize 似乎弄乱了我的 urlencoding(我已经专门针对网站使用的字符集对值进行了 urlencode)。例如,我的用户名包含一个 Å - 我已将其 urlencode 为 %C5。但是,当它与 mechanize 一起发送时,它显示为 %25C5。如何阻止 mechanize 更改字符串?

编辑:我意识到与其对抗 Mechanize ,不如在发送之前对我的字符串进行urlencode。结案。

最佳答案

Mechanize 似乎无论如何都会对字符串进行 urlencode,因此没有必要与之抗争。这是最终的解决方案(显然在语法上无效,但希望您能理解)。

import mechanize

self.browser = mechanize.Browser()
self.browser.open(self.url)
self.browser.select_form(name="login")

self.browser["login_nick"] = self.username
self.browser["login_pwd"] = self.password
self.browser.new_control("HIDDEN", "action", {})
control = self.browser.form.find_control("action")
control.readonly = False
self.browser["action"] = "login"
self.browser.method = "POST"
self.browser.action = self.url

response = self.browser.submit()

关于Python Mechanize 登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com