Dlaczego przykład przestał działać
Dziś w komentarzu ukash napisał:
(...) Poza tym ten przykład już nie działa – napis javascript i tak jest wychwytywany przez parser.
Rzeczywiście, parser zaczął działać lepiej, niż działał wcześniej. Dlaczego? Dlatego, że home.pl zmieniło wykorzystywaną wersję Pythona z 2.5 na 2.6. A w dokumentacji do HTMLParser z wersji 2.7 można znaleźć następujący fragment:
Changed in version 2.6: All entity references from htmlentitydefs are now replaced in the attribute values.
Oznacza to mniej więcej tyle, że mój przykład będzie zawierał o jedną podatność (no dobrze, to jest więcej niż jedna podatność, bardziej jakaś klasa podatności) mniej jeśli będzie uruchomiony z wykorzystaniem Python 2.6 lub Python 2.7. Myślę, że jest to doskonały przykład jak pozornie niewielka zmiana w środowisku może otworzyć/zamknąć wielką dziurę w aplikacji.
Obecnie skrypt powinien działać tak samo, jak wcześniej. Zmiany między HTMLParser w wersji 2.5 i 2.6 sprowadzają się do zmiany metody unescape , przynajmniej z tego, co na szybko sprawdziłem. Po prostu przeciążyłem nową wersję unescape przy pomocy “wersji oryginalnej”, czyli tej pochodzącej z 2.5.
Oryginał tego wpisu dostępny jest pod adresem Dlaczego przykład przestał działać
Autor: Paweł Goleń