Wysłanie request'u uzywajac SSL przez proxy

Odpowiedz Nowy wątek
2019-08-26 12:27
0

Witam serdecznie,

Chce wyciągnąć dane z pewnej strony internetowej X przy użyciu BS4, która to z kolei korzysta z technologii AJAX. Problem leży w tym, że aby połączyć się ze stroną muszę najpierw wysłać request używając SSL, ale gdy wysyłam go to proxy mi je blokuje :).
Jedno jest pewne , dostęp do strony mam - sprawdzane z poziomu przeglądarki

Znajdzie się jakiś szpec ?:)

Pozostało 580 znaków

2019-08-26 15:51
0
  1. Jakie proxy? Co to znaczy blokuje?
  2. Co to znaczy request używając SSLa?
  3. A ta strona na pewno tych danych nie serwuje jakimś webserwisem?

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2019-08-26 16:01
0

SSL/TLS zwykle jest prawie niewidoczne dla ciebie. Ot po prostu socket TCP IP który może zgłaszać jakieś dodatkowe błędy.
Prawdopodobnie problem jest z certyfikatem.
Najprawdopodobniej twoja aplikacja python jest tak skonfigurowana, że nie ufa certyfikatowi jakim serwer się identyfikuje.
Podaj dokładnie jaki masz błąd.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22, 2019-08-26 16:05

Pozostało 580 znaków

2019-09-17 17:39
0

Hej , cześć(strasznie zamuliłem, nawał pracy)

Generalnie robię coś takiego :

import requests
import ssl

CA_path = ssl.get_default_verify_paths().openssl_cafile
rq = requests.get("https://some.url", verife = CA_path)

OSError: Could not find the TLS certificate file, invalid path: C:\Program Files (x86)\Common Files\SSL/cert.pem # error

pliku tam nie ma i zastanawiam się nad tym, jak przeglądarka robi taki request ..skąd ona bierze właściwy certyfikat, bo jeśli ja bym miał dostęp do tej ścieżki to prawdopodobnie problem by się rozwiązał :)


  1. proxy? Co to znaczy blokuje?
  2. Co to znaczy request używając SSLa?
  3. A ta strona na pewno tych danych nie serwuje jakimś webserwisem?
  1. Znajduje się w sieci firmowej i bałem się, że proxy odrzucało mój request z jakiegoś powodu, ale dlaczego miał by to robić? skoro przeglądarka może się komunikowac
  2. Miałem na myśli to, że strona uzywa HTTPS i chce wysłać taki request żeby serwer chociaż odpowiedział kodem 200.
  3. Przyznam, że nie rozumiem ( ale zdaje się, że tak). Dostanie się do strony to dopiero początek, generalnie storna używa AJAXA, a ja chciałbym sparsować albo statycznie wygenerowany HTML z odpowiedzi, albo jeśli się uda to złapać JSON'a :), ale na razie nie wiem nic, bo utknąłem na samej komunikacji .
edytowany 2x, ostatnio: Shalom, 2019-09-18 13:00

Pozostało 580 znaków

2019-09-18 10:04
0

Chyba nie rozumiesz jak to działa.
Przeglądarka, ma preinstalowany zestaw ceryfikatów CA, do których producent przeglądarki ma zaufanie.
W momencie łączenia się z jakimś serwerem, serwer wysyła swój łańcuch zaufania, a przeglądarka sprawdza poprawność łańcucha i sprawdza, czy ten łańcuch ma ogniwo należące do zestawu zaufanych certyfikatów.
Python też ma jakiś zestaw zaufanych ceryfikatów. W programie w razie potrzeby możesz zdefiniować ten zestaw.
A twój błąd polega na tym, że coś jest źle skonfigurowane i pod wskazaną ścieżką nie ma pliku certyfikatu.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2019-09-18 12:17
0
MarekR22 napisał(a):

Chyba nie rozumiesz jak to działa.
Przeglądarka, ma preinstalowany zestaw ceryfikatów CA, do których producent przeglądarki ma zaufanie.
W momencie łączenia się z jakimś serwerem, serwer wysyła swój łańcuch zaufania, a przeglądarka sprawdza poprawność łańcucha i sprawdza, czy ten łańcuch ma ogniwo należące do zestawu zaufanych certyfikatów.
Python też ma jakiś zestaw zaufanych ceryfikatów. W programie w razie potrzeby możesz zdefiniować ten zestaw.
A twój błąd polega na tym, że coś jest źle skonfigurowane i pod wskazaną ścieżką nie ma pliku certyfikatu.

Owszem, wiedziałem że pewnie gdzieś brakuje mi jakiegoś elementu układani, dziękuje za wyjaśnienie.

Wydaje mi się, że poszedłem o krok dalej ...:), a mianowicie - teraz dostaje kod odpowiedź HTTP 401 od aplikacji.


url='https://mojUrl.aspx'
response = requests.post(url,verify=False)

print(response.status_code)

 InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
401

Nie wiem jak to działa i jak ten mechanizm się nazywa, ale po zalogowaniu się do swojego konta Windows, przeglądarka loguje się niejawnie z moimi poświadczeniami( czyli login windowsowy i hasło) do tej strony, przypuszczam że wysyła moje poświadczenia przez cookies, albo cos.. nie jestem specem od WEB'U.

request metodą GET wygląda tak

fromp.png


Dam więcej info, może ktoś się dołączy :).
W momencie wprowadzenia danych w tym oknie formularza:

2019-09-18_13h54_30.png

zostają tworzone 2 requesty typu GET!

2019-09-18_13h54_40.png

Po kliknięciu w żadana pozycje w menu, zostają robione dodatkowe requesty POST:

2019-09-18_13h54_50.png

i teraz:

2019-09-18_13h54_60.png

tutaj jest request , który ja bym chciał złapać. To tu są najcenniejsze informacje dla mnie, zakładając że nie będę musiał parsować statycznego HTML'a. Może ta informacja coś jeszcze komuś podpowie. Widziałem, ze w niektórych polach była często używana naza SNMP, może w ten sposób spróbować ??

edytowany 3x, ostatnio: pain368, 2019-09-18 14:57

Pozostało 580 znaków

2019-09-18 20:46
0

Zainstaluj sobie BurpSuite Free i zobacz co tam idzie między przeglądarką a serwerami. Albo ew. Wiresharka, tylko pamiętaj, żeby ustawić sobie SSL log file: https://jimshaver.net/2015/02[...]-with-wireshark-the-easy-way/

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0