Bonjour tous,
Je suis en train de développer un robot en python pour extraire des données sur un site sécurisé.
le site sécurisé est sur internet et je suis derriere un proxy sur un réseau local.
Petite particularité, ce site n'est accessible qu'au travers de certificats.
Mon code est le suivant:
En l'executant, j'obtient ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 from mechanize import Browser host = 'www.myserver.com:443' site_id="https://www.myserver.com/" br=Browser() br.set_proxies({"https": "http://my-proxy.company.com:8088","http": "http://my-proxy.company.com:8088"}) br.add_client_certificate(host,"certs/certificate_key.pem","certs/certificate.pem") br.set_debug_http(True) print "in test.py" br.open(site_id)
J'ai testé ce même code sur un serveur qui n'avait pas besoin de proxy et il fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 in test.py connect: (my-proxy.company.com, 8088) send: 'GET <a href="https://www.myserver.com/" target="_blank">https://www.myserver.com/</a> HTTP/1.1\r\nAccept-Encoding: identity\r\nHost: <a href="http://www.myserver.com\r\nConnection:" target="_blank">www.myserver.com\r\nConnection:</a> close\r\nUser-Agent: Python-urllib/2.5\r\n\r\n' reply: 'HTTP/1.1 400 Bad Request\r\n' header: Cache-Control: no-cache header: Pragma: no-cache header: Content-Type: text/html; charset=utf-8 header: Proxy-Connection: close header: Connection: close header: Content-Length: 691 Traceback (most recent call last): File "./test.py", line 67, in <module> br.open(site_id) File "build/bdist.linux-i686/egg/mechanize/_mechanize.py", line 203, in open File "build/bdist.linux-i686/egg/mechanize/_mechanize.py", line 254, in _mech_open mechanize._response.httperror_seek_wrapper: HTTP Error 400: Bad Request
Par ailleurs, la librairie mechanize que j'utilise (0.1.7b) semble être une traduction de ce que fait la lib www::mechanize de perl.
L'erreur 400 étant commune dans ce contexte perl, la solution passait par une variable à unseté. "https"
Je n'ai pas trouvé d'équivalent pour mechanize python, mais le comportement semble bien similaire.
Es-ce que quelqu'un a déjà rencontré ce genre de problème? et résolu ...
Merci pour vos réponses et aides.
Poupoune
Partager