使用Python执行vBulletin论坛登录

使用Python执行vBulletin论坛登录,python,python-requests,mechanize,vbulletin,Python,Python Requests,Mechanize,Vbulletin,我想登录到vbulletin论坛 登录后,您将被重定向到主页。我想一个论坛线程的内容,这是唯一可见的,当登录 我发现这个问题: 我的代码如下所示: username = "testuser" password = "testpassword" try: FORUM_URL = 'https://forumurl.com/forum/' session = requests.Session() session.post(FORUM_URL + 'login.

我想登录到vbulletin论坛

登录后,您将被重定向到主页。我想一个论坛线程的内容,这是唯一可见的,当登录

我发现这个问题:

我的代码如下所示:

username = "testuser"
password = "testpassword"
try:
FORUM_URL = 'https://forumurl.com/forum/'
session = requests.Session()
session.post(FORUM_URL + 'login.php?do=login', {
    'vb_login_username':        username,
    'vb_login_password':        password,
    'vb_login_md5password':     hashlib.md5(password.encode()).hexdigest(),
    'vb_login_md5password_utf': hashlib.md5(password.encode()).hexdigest(),
    'cookieuser': 1,
    'do': 'login',
    's': '',
    'securitytoken': 'guest'
})
except Exception as e:
    print(str(e))

q = session.get("https://forumurl.com/forum/showthread.php?123456")
print(str(q.text))
这将生成以下输出:(已翻译)

这将生成以下输出:

mechanize._response.httperror_seek_wrapper: HTTP Error refresh: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
OK
我不知道如何在启用cookie/javascript的情况下登录

编辑:

我得到了含硒的解决方案:

driver = webdriver.Firefox()
driver.get("https://12345.com/forum/forum.php")
time.sleep(15)
driver.find_element_by_link_text("Login").click()
time.sleep(5)
driver.find_element_by_class_name("loginbutton").click()
driver.find_element_by_id("vb_login_username").send_keys(username)
driver.find_element_by_id("vb_login_password").send_keys(password)
driver.find_element_by_class_name("button").click()

抱歉,忘记将其标记为已回答

下面是代码:

driver = webdriver.Firefox()
driver.get("https://12345.com/forum/forum.php")
time.sleep(15)
driver.find_element_by_link_text("Login").click()
time.sleep(5)
driver.find_element_by_class_name("loginbutton").click()
driver.find_element_by_id("vb_login_username").send_keys(username)
driver.find_element_by_id("vb_login_password").send_keys(password)
driver.find_element_by_class_name("button").click()

抱歉,忘记将其标记为已回答

下面是代码:

driver = webdriver.Firefox()
driver.get("https://12345.com/forum/forum.php")
time.sleep(15)
driver.find_element_by_link_text("Login").click()
time.sleep(5)
driver.find_element_by_class_name("loginbutton").click()
driver.find_element_by_id("vb_login_username").send_keys(username)
driver.find_element_by_id("vb_login_password").send_keys(password)
driver.find_element_by_class_name("button").click()

如果站点需要javascripts,那么请求包将无法工作。我从未使用过mechanize,但从文档来看,它似乎也不能使用javascript。Selenium将使用javascript,因此您可以使用它。我已经尝试过Selenium和Webdriver/Firefox。。它没有成功:扫描您使用Selenium时发布的代码?Selenium应该可以工作。我已经编辑了Selenium代码,现在它可以为我工作:-)如果站点需要javascripts,那么requests包将无法工作。我从未使用过mechanize,但从文档来看,它似乎也不能使用javascript。Selenium将使用javascript,因此您可以使用它。我已经尝试过Selenium和Webdriver/Firefox。。它没有成功:扫描您使用Selenium时发布的代码?Selenium应该可以工作。我已经编辑了Selenium代码,现在它适合我:-)
driver = webdriver.Firefox()
driver.get("https://12345.com/forum/forum.php")
time.sleep(15)
driver.find_element_by_link_text("Login").click()
time.sleep(5)
driver.find_element_by_class_name("loginbutton").click()
driver.find_element_by_id("vb_login_username").send_keys(username)
driver.find_element_by_id("vb_login_password").send_keys(password)
driver.find_element_by_class_name("button").click()