Я пытаюсь войти в Dropbox (dropbox.com/login) с помощью механизации на Python.
Я думаю, что что-то упустил, поскольку ответ возвращается как HTTP Запрещенная ошибка 403.
Это код, который я использовал:
import mechanize
url = "https://www.dropbox.com/login"
email = "<USERNAME>"
password = "<PASSWORD>"
br = mechanize.Browser()
br.set_handle_equiv(False)
br.set_handle_gzip(False)
br.set_handle_redirect(False)
br.set_handle_referer(False)
br.set_handle_robots(False)
br.addheaders = [('Host', 'www.dropbox.com')]
br.addheaders = [('Connection', 'keep-alive')]
#br.addheaders = [('Content-Length', '7385')]
br.addheaders = [('Upgrade-Insecure-Requests', 1)]
br.addheaders = [('Origin', 'https://www.dropbox.com')]
br.addheaders = [('X-Requested-With', 'XMLHttpRequest')]
br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36')]
br.addheaders = [('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8')]
br.addheaders = [('Content-Type', 'application/x-www-form-urlencoded;
charset=UTF-8')]
br.addheaders = [('Referer', 'https://www.dropbox.com/login?
cont=https%3A%2F%2Fwww.dropbox.com')]
br.addheaders = [('Accept-Encoding', 'gzip, deflate, br')]
br.addheaders = [('Accept-Language', 'en-US,en;q=0.9')]
br.addheaders = [('Cookie', '<COOKIE DATA>')]
response = br.open(url)
try:
formcount=0
for frm in br.forms():
if str(frm.attrs["class"])=="clearfix credentials-form login-form":
break
formcount=formcount+1
br.select_form(nr=formcount)
br.form.set_all_readonly(False)
except:
print("Unable to find login form.");
exit(1);
br.form['login_email'] = email
br.form['login_password'] = password
response = br.submit(nr = formcount)
print response.text
И это ответ:
Traceback (most recent call last):
File "login.py", line 51, in <module>
response = br.submit(nr = formcount)
File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 685, in
submit
return self.open(self.click(*args, **kwds))
File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 254, in
open
return self._mech_open(url_or_request, data, timeout=timeout)
File "C:\Python27\lib\site-packages\mechanize\_mechanize.py", line 310, in
_mech_open
raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 403: Forbidden
Я знаю, что что-то упустил, но не могу понять, что.
* Замечу, что я скопировал заголовки из перехваченного запроса, сделанного в браузере.
Я знаю, что есть SDK для Dropbox API, но мне нужно почистить сайт ..
Спасибо заранее,
Амит.