2013-12-17 3 views
0

Я пытаюсь написать скрипт Python, который будет автоматизировать вход в веб-клиент. Это автоматический вход в систему с веб-клиентом с предоставленным именем пользователя и паролем. Ниже мой код Python:Автоматизация входа

import httplib 
import urllib 
import urllib2 
header = { 
    'Host' : 'localhost.localdomain', 
    'Connection' : 'keep-alive', 
    'Origin' : 'localhost.localdomain', #check what origin does 
    'User-Agent' : 'Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131029 Firefox/17.0', 
    'Content-Type' : 'application/x-www-form-urlencoded', 
    'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Referer' : 'http://localhost.localdomain/mail/index.php/mail/auth/processlogin', 
    'Accept-Encoding' : 'gzip, deflate', 
    'Accept-Language' : 'en-US,en;q=0.5', 
    'Cookie' : 'atmail6=tdl3ckcf4oo88fsgvt5cetoc92' 
} 
content = { 
    'emailName' : 'pen.test.clin', 
    'emailDomain' : '', 
    'emailDomainDefault' : '', 
    'cssStyle' : 'original', 
    'email' : 'pen.test.clin', 
    'password' : 'aasdjk34', 
    'requestedServer' : '', 
    'MailType' : 'IMAP', 
    'Language' : '' 
} 

def runBruteForceTesting(): 
    url="http://localhost.localdomain/mail/index.php/mail/auth/processlogin" 
    for i in range (0,100): 
     data = urllib.urlencode(content) 
     request = urllib2.Request(url, data, header) 
     response = urllib2.urlopen(url, request) 
     print 'hi' 
     print request, response 
runBruteForceTesting() 

Однако: Я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "C:/Users/dheerajg/Desktop/python/log.py", line 39, in <module> 
    runBruteForceTesting() 
    File "C:/Users/dheerajg/Desktop/python/log.py", line 35, in runBruteForceTesting 
    response = urllib2.urlopen(url, request) 
    File "C:\Python27\lib\urllib2.py", line 127, in urlopen 
    return _opener.open(url, data, timeout) 
    File "C:\Python27\lib\urllib2.py", line 402, in open 
    req = meth(req) 
    File "C:\Python27\lib\urllib2.py", line 1123, in do_request_ 
    'Content-length', '%d' % len(data)) 
    File "C:\Python27\lib\urllib2.py", line 229, in __getattr__ 
    raise AttributeError, attr 
AttributeError: __len__ 

ответ

1

Объект request, который вы получили от urllib2.Request не имеют __len__ метод; в вашем контексте это означает, что вы вызываете urllib2.urlopen с неправильным вторым аргументом.

Глядя на документации, написано, что нужна строка:

data may be a string specifying additional data to send to the server, or None if no such data is needed.

Так что о вызове urlopen так:

response = urllib2.urlopen(url, request.get_data())

?

Смежные вопросы