gpt4 book ai didi

python - Mechanize ,两步验证 : How to fill out form within form

转载 作者:行者123 更新时间:2023-12-04 16:20:34 26 4
gpt4 key购买 nike

我有一个脚本来登录网站。挑战在于我在 EC2 上运行脚本,而网站要求我通过向我发送自定义代码来进行额外验证。

我立即收到电子邮件,但需要能够即时更新该字段。

这是脚本

导入 urllib2

import urllib2
import cookielib
import urllib
import requests
import mechanize
from bs4 import BeautifulSoup

# Browser
br = mechanize.Browser()

# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

# Browser options
br.set_handle_equiv(True)
br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_refresh(False)
br.set_handle_referer(True)
br.set_handle_robots(False)

# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)

# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]

# The site we will navigate into, handling it's session
br.open('https://www.website.com/login')

#select the first form
br.select_form(nr=0)

#user credentials
br['user_key'] = 'username@gmail.com'
br['user_password'] = 'somePassw0rd'

# Login
br.submit()

#enter verification code
input_var = raw_input("Enter something: ")

#put verification code in form
br['Verication'] = str(input_var)

#submit form
br.submit()

对我来说面临的挑战是我不断收到错误消息:
AttributeError: mechanize._mechanize.Browser instance has no attribute __setitem__ (perhaps you forgot to .select_form()?)

我该怎么做才能按预期运行?

最佳答案

在你 br.submit() 之后你直接进入

br['Verication'] = str(input_var)

这是不正确的,因为使用 br.submit() 将使您的浏览器不再选择表单。

提交后我会尝试:
for form in br.forms():
print form

查看是否还有其他表格可供选择

阅读登录站点上的 html 代码,并检查单击登录时会发生什么。您可能需要在同一页面上重新选择一个表单,然后将验证码分配给其中一个控件

关于python - Mechanize ,两步验证 : How to fill out form within form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23332870/

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