Pytanie:

Próbuję zautomatyzować wypełnienie formularza dla tej strony: HTTPS: // Secure. Ami.co.Nz/css/car/step1#noback.

jak możesz kombajn :

  1. Odpowiedzi z elementów formularzy wymagających żądań "OnClick" (XMLHTTPREQUEQUEQUEST) i
  2. Inne dane wejściowe formularzy (dane wejściowe tekstowe / radiowe), które tylko muszą być przekazywane ...

... W tej samej sesji, aby wypełnić ten formularz całkowicie, a następnie przesłać?

Tło

Pracuję z formularzem internetowym ubezpieczenie samochodu, aby uzyskać cytaty (pola są samochodem rego; adres; Nazwa; e-mail itp.). Dzwonienie do IT Example_site - które ładuję jako taka:

import requests
url = "https://example_site.com"
payload = {}
headers = {}
response_site = requests.request("GET", url, headers=headers, data = payload)

Formularz ma dane wejściowe, takie jak nazwa, ale także niektóre zdarzenia OnClick (XMLHTTPREQUEQUEQUEQUEQUEQUEQUEQUEQUEQUEQUEQUEQUQUEQUEQUEQUEQUEQUEQUEQUEVER) (w celu określenia pojazdu i adresu).

Określałem, jak przesłać żądanie pocztowego dla tych zdarzeń Onclick w Izolacji, aby wygenerować odpowiedź, używając narzędzia Dev i karta sieciowa, aby wygenerować poniższy kod. Przykład poniżej dla Reno = ABC321:

url = "https://example_site.com/searchVehicleByRegNo"
payload = "regNo=abc321"
headers = {
     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
     'Host': 'secure.ami.co.nz',
     'X-Requested-With': 'XMLHttpRequest',
}
# Post response contains all information on vehicle
response_rego = requests.request("POST", url, headers=headers, data = payload)

Uwaga: Unikanie selenu, jak jest na tym celu

0
opticMan 16 wrzesień 2020, 12:48

1 odpowiedź

Najlepsza odpowiedź

Wygląda na to, że musisz wykonać te prośby w tej samej sesji, infact, jeśli spojrzysz na ostatnie żądanie, które zostało wykonane w secure.ami.co.nz/url/css/car/step2/:

vehicle.redbookVehicleKey=NZVDAEW2001AEAF
garagingAddress.manualSuburbTown=ARO VALLEY, WELLINGTON 6011
policy.coverageTypeCd=FULL
vehicle.isManualEntry=false
vehicle.searchRegNo=abc321
garagingAddress.fullAddress
garagingAddress.manualUnitNumber=a
garagingAddress.manualStreetNumber=a
garagingAddress.manualStreetName=a
garagingAddress.isManual=true
garaging.garagingCd=OTH
policy.effective=2020-09-18
vehicle.hasImmobilizer=false
vehicle.isBusinessUse=false
transferKey=xxxx
ccssSessionId=xxxx
...

Znajdziesz "klucz pojazdu" został wysłany jako odpowiedź dla searchVehicleByRegNo

{
  "registrationNo_vehicleList": [
    {
      "id": null,
      "vehicleCode": "NZVDAEW2001AEAF",
      "registrationNo": "ABC321",
...

Który można użyć w ładunku twojego ostatniego żądania.

Chociaż, strona internetowa korzysta z recaptcha, a jego jedyną zadaniem jest zatrzymać to, co robisz teraz, więc będziesz walczył z czymś więcej problemów.

Str.s. Muszę powiedzieć, że searchVehicleByRegNo ma kilka interesujących informacji, które nie są wyświetlane na stronie internetowej, nie wiem, czego szukasz, ale polecam patrzeć na odpowiedź.

1
Anunay 16 wrzesień 2020, 20:14