Z racji swojej pracy od czasu do czasu przyjdzie mi przetestować jakąś aplikację "webową". Testowanie takiej aplikacji to bardzo często zabawa z parametrami, ich modyfikacja, usuwanie, wstawianie w nie fragmentu kodu. Zwykle pomocne bywają narzędzia takie jak WebScarab lub Fiddler. Czasami jednak ich wykorzystanie nie jest możliwe, WebScarab źle sobie radzi ze zintegrowanym uwierzytelnianiem, w przypadku dwustronnego SSL też nie zawsze jest dobrze...
Jak nie siekierą, to IE
Oczywiście, można bawić się w zmianę parametrów w samej przeglądarce, ale nie jest to specjalnie wygodne. Dlatego wpadłem na genialny pomysł... Internet Explorer może nie jest najlepszą przeglądarką pod słońcem, ale dostępny jest jako obiekt COM, pozwala bardzo sympatycznie się automatyzować. Przykładowy skrypt w Pythonie wygląda następująco:
from win32com.client import Dispatch from urllib import urlencode
ie = Dispatch("InternetExplorer.Application") ie.visible = True;
url = None params_str = None
while True: if url: url_tmp = url url = raw_input("Podaj adres strony [%s]: "%url_tmp) if url == "": url = url_tmp else: url = raw_input("Podaj adres strony: ") if url == "exit": break params = {} if params_str: params_str_tmp = params_str params_str = raw_input("Nazwy parametrow [%s]: "%params_str_tmp) if params_str == "": params_str = params_str_tmp else: params_str = raw_input("Nazwy parametrow (oddzielone spacja): ") if params_str == "exit": break params_names = params_str.split() print "*"*10 for param_name in params_names: value = raw_input("Wartosc %s: "%param_name) params[param_name] = value print "*"*10 postdata = urlencode(params) print "Sprawdzam adres: %s"%url print "Parametry: %s"%postdata ie.Navigate(url,2,"",buffer(postdata)) ie.Quit()
Miałem też kilka bardziej rozbudowanych skryptów tego typu, ale na razie nie mogę ich nigdzie wygrzebać. Być może powyższy skrypt wstawię w ładniej sformatowany sposób, gdy pobawię się jakimś narzędziem typu python2html, chwilowo mi się nie chce :)