» »

curl + ssl

curl + ssl

Ice-Heki ::

Hoj,
imam težavo - rad bi simuliral prijavo v spletni portal, potem pa preveril eno informacijo in končal programček.
Spletni portal za dostop uporablja certifikate + geslo.
Če izvedem:
curl https://domena.com/read --cert cert.pem:pass --key key.pem -b cookie.txt -c cookie.txt -L

dobim prvo stran (login form) z mojimi podatki (vezanimi na certifikat). Super! :)
Geslo iz login forme je potrebno poslati na naslov https://domena.com/send
curl https://domena.com/send --cert cert.pem:pass --key key.pem -b cookie.txt -c cookie.txt -L --data "password=geslo"

namesto strani, da so vpisani podatki napačni oz. prijave v sistem dobim
405 Method Not Allowed

Ima kdo kakšno idejo kaj delam narobe?

crniangeo ::

če se prav spomnem, je tukaj problem končnica katero zelis gor poslat, poskusi spremeniti ime datoteke ki je zelis poslati v .txt ali karkoli podobnega :)
Convictions are more dangerous foes of truth than lies.

Ice-Heki ::

Hm, katero datoteko pa imaš v mislih? :|

blackbfm ::

na blef govorim..curl uporablja GET namesto POST zato dobiš 405?

ti priporočam da začneš uporabljat fiddler za http debugging:
http://www.telerik.com/fiddler

Zgodovina sprememb…

  • spremenilo: blackbfm ()

Ice-Heki ::

Ce posiljas podatke je Post. Tudi ce dam -x post dobim isti status.

blackbfm ::

jah nič, zaženi fiddler in glej kako brskalnik komunicira

če gre vpis prek ajaxa, zna bit server občutljiv na tale header
X-Requested-With: XMLHttpRequest

Zgodovina sprememb…

  • spremenilo: blackbfm ()

jype ::

Python mechanize ti bo prihranil ogromno dela.

#!/usr/bin/python

loginurl = ''
user = ''
pw = ''

import mechanize, re
from decimal import Decimal

br = mechanize.Browser()
br.open(loginurl)
br.select_form(name="loginForm")
br['username'] = user
br['password'] = pw
response = br.submit()
data = response.get_data()
print re.findall(r'Balance: ([0-9.,]+) EUR', data),
try:
    print Decimal(re.findall(r'Balance: ([0-9.,]+) EUR', data)[0])
except:
    print
br.follow_link(text_regex=r'Logout')

Zgodovina sprememb…

  • spremenilo: jype ()

misek ::

Post mora biti z veliko, torej
-X POST
Uporabi tudi
--trace -
za debug. - je lahko tudi ime datoteke, kamor se zapisuje vsebina.

MrStein ::

Možno je tudi, da stran pričakuje GET request. Ker ni dejanskega primera, lahko le ugibamo.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kako narediti python "cmd line" program

Oddelek: Programiranje
111596 (1019) ragezor
»

Python vrstica v seznam

Oddelek: Programiranje
5957 (840) brodul
»

Ubuntu 9.04->10.04 = Mail ne dela več

Oddelek: Operacijski sistemi
6906 (823) Icematxyz

python pomoč

Oddelek: Programiranje
393405 (2326) Mavrik
»

Python razcep niza

Oddelek: Programiranje
12930 (797) Invictus

Več podobnih tem