Wyciąganie tokena potrzebengo do zapytania.

Wyciąganie tokena potrzebengo do zapytania.
A9
  • Rejestracja:prawie 9 lat
  • Ostatnio:około miesiąc
  • Postów:408
0

Witam, piszę w Pythonie bota i mam pewien mały problem z logowaniem. Otóż należy przy logowaniu wysłać token w zapytaniu POST. Tylko nie wiem skąd i jak go wyciągnąć.

SO
  • Rejestracja:ponad 10 lat
  • Ostatnio:około rok
1

Pewnie da się go wyciągnąć ze źródła strony.
Przeglądarka też jakoś musi umieć go wysłać.

A9
  • Rejestracja:prawie 9 lat
  • Ostatnio:około miesiąc
  • Postów:408
0

@some_ONE: Rzeczywiście, znalazłem odpowiedni token na stronie głównej. Dzięki za odpowiedź :)

A9
  • Rejestracja:prawie 9 lat
  • Ostatnio:około miesiąc
  • Postów:408
0

@some_ONE:
Od razu się zapytam, bo nie ma co zakładać nowego wątku. Jakie wyrażenie regularne ułożyć do wyciągnięcia tokena z tego stringa?

Kopiuj
<input name="authenticity_token" value="Tt9hZ7GANCF7lmUONKU1NhxN6wXScarimczHm576Vgr3x6VV6FY0lQCcWGF1sqfE7VqnC1FM0s1oXnioQjQoeg==" type="hidden">

Chciałbym w wyniku dostać:

Kopiuj
Tt9hZ7GANCF7lmUONKU1NhxN6wXScarimczHm576Vgr3x6VV6FY0lQCcWGF1sqfE7VqnC1FM0s1oXnioQjQoeg

Wyrażenie ```
r'"authenticity_token" value=^[a-zA-Z0-9_]+$'

Kopiuj
0

Nie używa się regex-ów do takich rzeczy...

Użyj BeautifulSoup4

Kopiuj
import bs4
soup = bs4.BeautifulSoup(<HTML>, 'html.parser')

for target in soup.find_all('input'):
    if target['name'] == 'authenticity_token':
        print(target['value'])
A9
  • Rejestracja:prawie 9 lat
  • Ostatnio:około miesiąc
  • Postów:408
0

BeautifulSoup4 zniweluje też ten problem, że token na stronie potrafi mieć trochę inną treść niż token wysyłany w POSTem?
Tak np. wygląda token ze strony:

Kopiuj
uF6bMfCEk9DOXTzBFXtwIzQ4BJIJsq2HTWH1AlSpg1tKBEfn+nDwgaOUs1NTdapvO+pf7StQ4M0HkTvWJVSE9g

A tak wygląda token wysyłany POSTem:

Kopiuj
uF6bMfCEk9DOXTzBFXtwIzQ4BJIJsq2HTWH1AlSpg1tKBEfn%2BnDwgaOUs1NTdapvO%2Bpf7StQ4M0HkTvWJVSE9g
edytowany 1x, ostatnio: arkadiusz97

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.