2011-11-22 13 views
7

Próbuję uzyskać dostęp do lokalnej strony internetowej zaprojektowanej za pomocą frameworka Symfony. Działa to doskonale z przeglądarką internetową i CURL, ale kiedy używam mechanizmu, zawsze otrzymuję 401 nieautoryzowaną odpowiedź na serwer.Symfony i zmechanizuj

import mechanize 


# Browser 
br = mechanize.Browser() 
br.set_debug_http(True) 
br.set_debug_redirects(True) 
br.set_debug_responses(True) 

# Does not change anything even if we change thos 
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')] 

# Here is my website 
r = br.open('http://localhost:8080/frontend_dev.php/home') 
html = r.read() 

# Show the html source 
print html 

Czy masz pojęcie, dlaczego zachowuje się tak?

Dzięki

+0

Czy Symfony jest trafione czy nie? Co się dzieje, kiedy piszesz, umierasz ("hit"); na górze pliku frontend_dev.php? – greg0ire

+0

Jeśli umrę ("uderzę"); Widzę błąd, a nie 401. – lc2817

Odpowiedz

6

W końcu znalazłem odpowiedź sam. Istnieje błąd w sfDoctrineGuardPlugin (i sfGuardPlugin), który powoduje to zachowanie, jak stwierdzono here. Zastosowałem łatkę i problem został rozwiązany.

+0

To stary błąd, myślę, że musisz mieć starą wersję wtyczki. Rozważ aktualizację. – greg0ire

+0

Błąd został poprawiony w sierpniu tego roku. Ostatnia wersja SFDoctrineGuard została wykonana w 2010 roku. Nie sądzę, że masz rację. Co sugerujesz: http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin – lc2817

+0

Proponuję użyć Symfony2 Poważnie, nie wiem, dlaczego ostatnie wydanie jest tak stare ... może jwage jest zbyt zajęty z doktryną2/sf2 ... – greg0ire

1

istnieje ścisła kontrola, kto może uzyskać dostęp do środowiska programowania w symfony. Spróbuj użyć głównego adresu URL (prawdopodobnie http://localhost:8080/index.php/home)

+0

To nie rozwiązało problemu. Właśnie wypróbowałem to i dostałem ten sam błąd – lc2817

+0

Przepraszam. Zakładam, że wyczyściłeś pamięć podręczną? Czy masz jakieś poświadczenia lub cokolwiek, co jest wymagane? – MrGlass

+0

Dla pamięci podręcznej: tak. Nie mam żadnych referencji potrzebnych do strony głównej, na niektórych stronach tak. I działa idealnie z lokami, nie wiem dlaczego ... – lc2817

1

Czy możesz podać jakiś poprawny adres, aby wypróbować swój kod? I Zgadnij że przegapiłeś niektóre ustawienia, spróbuj wyłączyć roboty.

br.set_handle_robots(False) 
+0

Próbowałem tego i nic nie zmieniałem. Nie Nie mogę podać poprawnego adresu, aby wypróbować mój kod poprawnie (nie, może później). – lc2817

1

Nie wiem nic na temat Symfony Framework wiem, ale jak jesteś coraz 'Error : 401 '. Dodanie tych linii może działać.

br.add_password('http://localhost:8080/frontend_dev.php/home', 'username', 'password') 
br.open('http://localhost:8080/frontend_dev.php/home') 
+0

Próbowałem tego i nadal otrzymuję ten sam błąd – lc2817