Indy Cookies Cookie Manager Poblem

Indy Cookies Cookie Manager Poblem
EN
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 10 lat
  • Postów:23
0

Witam!
Prosiłbym o pomoc.

Z wiresharka wiem, że:

  1. Wysyłam zapytanie logowania.
  2. Otrzymuję odpowiedź Moved Temporarily, z polem SetCookie
  3. Realizują się przekierowania

Do IdHTTP mam podpiętego Cookie Managera. Gdy jednak próbuję odwołać się do zawartości CookieCollection wyszukując dane ciasteczko lub chcąc wyświetlić wszystkie okazuje się być pusta. Strumień Output zawiera odpowiedź z ostatniego przekierowania(ResponseText=HTTP/1.0 200 OK, a Raw Headers=

Kopiuj
Cache-Control: private, pre-check=0, post-check=0, max-age=0
Expires: 0
Pragma: no-cache
Content-Type: text/html
Date: Wed, 19 Oct 2011 20:49:09 GMT
Connection: close

). Skąd zdobyć odpowiedź i cookies z pierwszej odpowiedzi serwera? Jakoś inaczej odwołać się do Cookie Managera?

Możliwe, że błędnie się do niego odnoszę. Jednak większość jego właściwości i funkcji jest w dziwnych typach, których w żaden sposób nie mogę odczytać. Jak się do nich "dobrać"?

Z góry dzięki

edytowany 1x, ostatnio: olesio
olesio
A musisz koniecznie męczyć się z Indy? Jeżeli tak to pomóc może tylko napisanie o jaką stronę chodzi i wtedy może kAzek coś pomoże, bo ja osobiście mogę jedynie monotematycznie, ale szczerze polecić Synapse, z którym jest o wiele mniej problemów ;/
EN
Cookie mimo widoczności w wiresharku w delphi ciągle się chowają. Chyba faktycznie znowu użyję synapse
KA
Może masz Indy 9 tam z tego co pamiętam czasami były problemy z ciachami ale innego typu nie to, że "się chowały" bo były w CookieCollection ale IdHTTP ich nie wysyłało do kolejnego zapytania tylko trzeba było je dodać do Headers i wtedy działało... ale w Indy 10 nigdy nie miałem problemów.
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1

Kod dla Indy 10 (w Indy 9 mogą być drobne różnice ale jeżeli już chcesz w Indy a masz 9 to polecam zmianę na 10):

Kopiuj
const
  UA = 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
  URL = 'http://google.pl';
var
  i: Integer;
begin
  IdHTTP1.Request.UserAgent:= UA;
  IdHTTP1.HandleRedirects:= True;
  IdHTTP1.CookieManager:= IdCookieManager1;
  IdHTTP1.Get(URL);
  Memo1.Lines.Add('METODA 1 - Cookie Collection:');
  for i:= 0 to IdHTTP1.CookieManager.CookieCollection.Count - 1 do
    Memo1.Lines.Add(IdHTTP1.CookieManager.CookieCollection.Items[i].CookieText);
  Memo1.Lines.Add('METODA 2 - Headers:');
  for i:= 0 to IdHTTP1.Response.RawHeaders.Count - 1 do
    Memo1.Lines.Add(IdHTTP1.Response.RawHeaders.Strings[i]); //tu musisz poszukac Set-Cookie
end;

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
EN
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 10 lat
  • Postów:23
0

Na stronie indy jest info o crashu serwera i nie da się pobrać indy 10. Jeśli macie, to dajcie proszę linka do instalki innej niż Indy 10.0.52(Rzekomo nierozwijana i zabugowana wersja)

Edit. Lub ewentualnie podajcie proszę, gdzie mam te cookie dodać. Do Strumienia wysyłanego w zapytaniu(POST-em)? W jakiej formie(nazwa_cookie=wartosc_cookie;), czy bez średnika? Z góry dzięki za pomoc

edytowany 1x, ostatnio: entrick
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
1

Indy 10 jest na: http://web.archive.org/web/20070122043958/www.atozed.com/indy/Plus/Files.en.aspx - przed pobieraniem po kliknięciu na odnośnik długo nic się nie dzieje, ale po kilkunastu, a czasem większej ilości sekund plik się pobierze.


Pozdrawiam.
KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1

Olesio to jest właśnie to 10.0.52

Tu jest jakaś inna wersja jeszcze jej nie instalowałem itd... chyba 10.46.90 (tak przypuszczam po nazwie archiwum) w każdym razie daty modyfikacji plików pozwalają przypuszczać że to najnowsza wersja:
http://indy.fulgan.com/ZIP/

Masz jeszcze instrukcje instalacji abyś wiedział w jakiej kolejności kompilować / instalować:

Kopiuj
Delphi / BCB Installation

2) Open and compile .dpk files in the following order:

         1. IndySystemX0.dpk (in Lib\System)
         2. IndyCoreX0.dpk (in Lib\Core)
         3. IndyProtocolsX0.dpk (in Lib\Protocols)
         4. IndySuperCoreX0.dpk (in Lib\SuperCore)
            If you are not using SuperCore, then you do not need to compile this package.

3) Now open these .dpk files and click install in the following order:

         1. dclIndyCoreX0.dpk (in Lib\Core)
         2. dclIndyProtocolsX0.dpk (in Lib\Protocols)
         3. dclSuperCoreX0.dpk (in Lib\SuperCore)
            Only install this if you have compiled SuperCore.

Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
edytowany 3x, ostatnio: kAzek
EN
Dzięki wielkie
EN
Wszystkie pliki.dpk z końcówką NET nie działają(AV), poza tym kilka innych wywala błędy. Czy niekompletna instalacja będzie działać?
KA
Czytałeś instrukcję wyżej? Jaką masz wersję Delphi że za te NET się bierzesz? W zależności od wersji Delphi otwierasz i kompilujesz (i instalujesz te z dcl na początku) odpowiednie pliki dpk np dla Delphi 7 będą to pliki *70.dpk
EN
Ok, skoro NET-em nie mam się zajmować, to reszta działa. Dzięki!
EN
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 10 lat
  • Postów:23
0

Niestety, po testach okazało się, że pierwsze cookie jest prawidłowo ustawiane w cookie managerze, ale te otrzymywane po przekierowaniu już nie bardzo. Jak mogę "wskoczyć" pomiędzy przekierowania?(W odpowiedzi na pierwsze zapytanie wysyłana jest odpowiedź z przekierowaniem i set-cookie, które trzeba wysłać w odpowiedzi do tego przekierowanie, a ja ustawiam ręcznie cookie przed pierwszym wysłaniem(Czeka mnie reinstalacja delphi i indy chyba niestety, bo to ciągle nie działa).

Da się "wskoczyć" pomiędzy przekierowania zapisane jednym poleceniem IdHttp.Post, czy czeka mnie reinstalacja delphi i indy?

KA
  • Rejestracja:prawie 20 lat
  • Ostatnio:minuta
  • Lokalizacja:Gorlice
1

Zdarzenie OnRedirect wykonuje się przed wykonaniem przekierowania tam można pokombinować. Reinstalacja Delphi i Indy raczej nic nie da i wątpię aby to była wina Indy czy nawet Delphi) być może coś jednak zrobisz źle ale trudno coś powiedzieć nie znając kodu co jak piszesz nawt nie znając adresu na ktorą stronę chcesz się dostać.


Nie odpowiadam na PW w sprawie pomocy programistycznej.
Pytania zadawaj na forum, bo:
od tego ono jest ;) | celowo nie zawracasz gitary | przeczyta to więcej osób a więc większe szanse że ktoś pomoże.
EN
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 10 lat
  • Postów:23
0

Robię autorespondera do darkwarez.pl

Kod mi ciężko przytoczyć bo teraz ma w sumie ok. 2k linijek, a żebym wydobył tylko to co się odnosi do komunikacji http to bym musiał trochę czasu poświęcić. Zobaczę, czy uda mi się przez to zdarzenie, a jak nie to wezmę się do wydobycia kodu

EDIT. Mam ten kod:

Najpierw się loguję, jednak wysyłając kolejne zapytania z wiresharka wiem, że nie wysyłam otrzymanych cookie, przez co odpowiedzi nie są przyjmowane(Choc w wiresharku w odpowiedzi serwera nie ma o tym informacji, wiec sie tylko domyslam, ale nie bardzo widze, co jeszcze mogloby byc nie tak(Mam vip-a wiec recaptchy nie powinno byc))
Co ważniejsze fragmenty:

Forum : IdHttp
Logowania : Memo

Kopiuj
procedure TMainForm.Button1Click(Sender: TObject);
const
  UA = 'Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1';
var
  Input, OutPut : TStringStream;
  ErrCode : ShortString;
  PliczekDrkwz : TextFile;
 Cookies : String;
 nCookies : Integer;
  PliczekCookie : TextFile;
  PliczekData : TextFile;
  Liczba : Integer;

begin
  Logowania.Lines.Clear;
  Logowania.Lines.Add('Loguję do Darkwarez.pl...');

  { Z Firebuga: usrname=Nick&passwrd=Passy&redirect=&login=Zaloguj }

  { stworzenie strumieni tekstowych }
  Input := TStringStream.Create('');
  Output := TStringStream.Create('');
  try
    Button1.Enabled := False; // zablokowanie przycisku
    Forum.AllowCookies := TRUE;

    Input.WriteString(Format('usrname=%s&passwrd=%s&autologin=on&redirect=&login=Zaloguj', [LoginDrkwz.Text, PassyDrkwz.Text]));

   Forum.Request.UserAgent:= UA;
   Forum.HandleRedirects:= True;
   Forum.CookieManager:= IdCookieManager1;


    Forum.Get('http://darkwarez.pl/forum/login.php');
    Memo1.Lines.Add('METODA 1 - Cookie Collection:');
    for i := 0 to Forum.CookieManager.CookieCollection.Count - 1 do
    Memo1.Lines.Add(Forum.CookieManager.CookieCollection.Items[i].CookieText);
    Memo1.Lines.Add('METODA 2 - Headers:');
    Cookies := '';
    Memo1.Clear;
    for i:= 0 to Forum.Response.RawHeaders.Count - 1 do
    begin
    Memo1.Lines.Add(Forum.Response.RawHeaders.Strings[i]);
    end;

{

Nagłówki odpowiedzi

HTTP/1.0 302 Moved Temporarily
Set-Cookie: phpbb2dww_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A7%3A%221460688%22%3B%7D; expires=Fri, 26-Oct-2012 13:36:25 GMT; path=/; domain=.darkwarez.pl
phpbb2dww_sid=880324dcbdb1158f83bdf5f17af29f62; path=/; domain=.darkwarez.pl
Location: http://darkwarez.pl/forum/index.php
Content-Type: text/html
Content-Length: 0
Date: Thu, 27 Oct 2011 13:36:25 GMT
Connection: keep-alive


Nagłówki zapytania

POST /forum/login.php HTTP/1.1
Host: darkwarez.pl
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://darkwarez.pl/forum/login.php

}


    Try
      Forum.Request.Referer := 'http://darkwarez.pl/forum/login.php';
      Forum.Post('http://darkwarez.pl/forum/login.php', Input, Output); // wyslanie danych ze strumienia do skryptu
      Forum.Request.Referer := 'http://darkwarez.pl/forum/';
    except
      Logowania.Lines.Add('Wystąpił błąd podczas logowania do Darkwarez');
      ShowMessage('Błąd logowania!');
    end;

    Memo1.Clear;
    Memo1.Lines.Add('Po logowaniu: METODA 1 - Cookie Collection:');
    for i := 0 to Forum.CookieManager.CookieCollection.Count - 1 do
    Memo1.Lines.Add(Forum.CookieManager.CookieCollection.Items[i].CookieText);
    Memo1.Lines.Add('METODA 2 - Headers:');
    Cookies := '';
    for i:= 0 to Forum.Response.RawHeaders.Count - 1 do
    begin
    Memo1.Lines.Add(Forum.Response.RawHeaders.Strings[i]); 
    end;


    Cookies := Memo1.Text;
    If Pos('Set-Cookie:', Cookies) <> 0 then
    begin
    	While Pos('Set-Cookie:', Cookies) <> 1 do
      	 begin
      	 Delete(Cookies, 1, 1);
      	 end;


  	While Pos(':', Cookies) <> 1 do
    	 begin
    	 Delete(Cookies, 1, 1);
    	 end;

    	Cookies := 'Cookies'+Cookies;

   	SetCookie1 := '';

   	While Pos('domain=.darkwarez.pl', Cookies)<> 1 do
    	 begin
    	 SetCookie1 := SetCookie1+Copy(Cookies, 1, 1);
    	 Delete(Cookies, 1, 1);
    	 end;

   	SetCookie1 := SetCookie1+'domain=.darkwarez.pl';

   	While Pos('Set-Cookie:', Cookies) <> 1 do
      	 begin
      	 Delete(Cookies, 1, 1);
      	 end;

   	While Pos(':', Cookies) <> 1 do
    	begin
    	Delete(Cookies, 1, 1);
    	end;

    	Cookies := 'Cookies'+Cookies;

   	SetCookie2 := '';

   	While Pos('domain=.darkwarez.pl', Cookies)<> 1 do
    	 begin
    	 SetCookie2 := SetCookie2+Copy(Cookies, 1, 1);
    	 Delete(Cookies, 1, 1);
    	 end;

   	SetCookie2 := SetCookie2+'domain=.darkwarez.pl';


    end;

    Cookies := Memo1.Text;

    AssignFile(PliczekCookie, 'SID.txt');
    AssignFile(PliczekData, 'Data.txt');

    nCookies := Pos('phpbb2dww_sid', Cookies);
    If nCookies <> 0 then
    begin
      While Pos('phpbb2dww_data', Cookies) <> 1 do
      begin
      Delete(Cookies, 1, 1);
      end;

      While Pos('=', Cookies) <> 1 do
      begin
      Delete(Cookies, 1, 1);
      end;

      Delete(Cookies, 1, 1);
      phpbb2dww_data := '';
      While Pos(';', Cookies) <> 1 do
      begin
      phpbb2dww_data := phpbb2dww_data+Copy(Cookies, 1, 1);
      Delete(Cookies, 1, 1);
      end;
      { phpbb2dww_data= }     
      Forum.CookieManager.AddCookie('phpbb2dww_data='+phpbb2dww_data, '.darkwarez.pl');
      Logowania.Lines.Add('Cookie phpbb2dww_data= '+phpbb2dww_data);

      ReWrite(PliczekData);
      Write(PliczekData, phpbb2dww_data);
      CloseFile(PliczekData);

      While Pos('phpbb2dww_sid', Cookies) <> 1 do
      begin
      Delete(Cookies, 1, 1);
      end;

      While Pos('=', Cookies) <> 1 do
      begin
      Delete(Cookies, 1, 1);
      end;

      Delete(Cookies, 1, 1);
      SID := '';
      While Pos(';', Cookies) <> 1 do
      begin
      SID := SID+Copy(Cookies, 1, 1);
      Delete(Cookies, 1, 1);
      end;
      Forum.CookieManager.AddCookie('phpbb2dww_sid='+SID, '.darkwarez.pl');

      ReWrite(PliczekCookie);
      Write(PliczekCookie, SID);
      CloseFile(PliczekCookie);

      BrakSID := FALSE;

    end
    else
    begin
      If not FileExists('SID.txt') then
      begin
      	BrakSid := TRUE
      end
      else
      begin // jesli nie otrzymano cookie SessionID wczytaj ostatnio dostarczone z pliku tekstowego(Choc wg. Wiresharka set cookie dostaje zawsze, to przy wyzej uzytej metodzie "wydobywania" cookie jest ono widoczne tylko po nawiazaniu nowego polaczenia(np. rano podczas pierwszego polaczania z darkwarez.pl) - możliwe, że coś jest nie tak i przez to nie działa(Ale ogólnie inne działające autorespondery do darkwarez widziałem, więc wątpię, żeby mieli jakieś szczególne zabezpieczenia przed botami)
       Reset(PliczekCookie);
       Readln(PliczekCookie, SID);
       CloseFile(PliczekCookie);
       BrakSid := FALSE;

     	Forum.CookieManager.AddCookie('phpbb2dww_sid='+SID, '.darkwarez.pl');

       Reset(PliczekData);
       Readln(PliczekData, phpbb2dww_data);
       CloseFile(PliczekData);

   	Forum.CookieManager.AddCookie('phpbb2dww_data='+phpbb2dww_data, '.darkwarez.pl');

      
       Memo1.Lines.Add('Wczytywanie z plikow tekstowych. METODA 1 - Cookie Collection:');
       for Liczba := 0 to Forum.CookieManager.CookieCollection.Count - 1 do
       Memo1.Lines.Add(Forum.CookieManager.CookieCollection.Items[i].CookieText);    // Niestety, mimo, iż dodałem te cookie, to cookie ciągle nie są "widoczne", czyli też nie są wysyłane w nagłówkach zapytania
      end;
    end;

    { Cookie: phpbb2dww_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A32%3A%22843cb134a1811244d442265a5d3c9ace%22%3Bs%3A6%3A%22userid%22%3Bs%3A7%3A%221460688%22%3B%7D; phpbb2dww_sid=ddd3df7ad593b4c143869eb3220217b3 }

   // Forum.Request.CustomHeaders.Add('Cookie: phpbb2dww_data='+phpbb2dww_data+'; phpbb2dww_sid='+SID); // Jest to jedyna działająca metoda, dzięki czemu Cookie wychodzą w nagłówkach zapytania(Przeglądarka umieszcza je tam)

    If BrakSid then ShowMessage('Brak SID-a. Nie otrzymano Cookies');


Memo1.Lines.Add(Forum.Response.RawHeaders.CommaText);
Memo2.Lines.Add(Forum.Response.RawHeaders.Text);      



    { strumien Output przechwytuje odpowiedz serwera, czyli kod HTML jaki wyswietlil skrypt }

    if Pos('nieprawidłowe lub nieaktywne dane użytkownika', Output.DataString) <> 0 then  // jeżeli wystąpi taka linia
    begin
      bladlogowaniedrkwz := TRUE;
      ErrCode := 'Podałeś nieprawidłowe lub nieaktywne dane użytkownika';
    { teraz pozostaje juz tylko ten komunikat wyswietlic }
      Logowania.Lines.Add('Wystąpił błąd podczas logowania do Darkwarez: '+ErrCode);
    end;

    If bladlogowaniedrkwz = FALSE then
    begin
     Logowania.Lines.Add('Pomyslnie zalogowano do darkwarez.pl!');
     LoggedDrkwz := TRUE;
    end
    else
    begin
     LoggedDrkwz := FALSE;
    end;
  finally
  { zwolnienie zasobow }
    Input.Free;
    Output.Free;
    Button1.Enabled := True;
  end;
end; // koniec procedury logowania


{ Fragment autorespondera o odpowiedzi: }


 {wysłanie odpowiedzi}
 {http://darkwarez.pl/forum/posting.php?mode=reply&t=2384074}

 { subject=...&helpbox=Tekst+podkre%B6lony%3A+%5Bu%5Dtekst%5B%2Fu%5D++%28alt%2Bu%29&message=Tresc Wiadomosci&mode=reply&sid=3fd59ca71ccd6f55d422015e9345cd9e&t=3095446&post=Wyślij }



 Input3.WriteString(Format('subject=&helpbox=Tekst podkreślony: [u]tekst[/u] (alt+u)&message=%s&mode=reply&sid=%s&t=%s&post=Wyślij', [TrescOdpowiedzi2, SID, IdTematu]));



{
Nagłówki zapytania wysyłane przez przeglądarkę do odpowiedzi:

POST /forum/posting.php HTTP/1.1
Host: darkwarez.pl
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://darkwarez.pl/forum/posting.php?mode=reply&t=2929422
Cookie: phpbb2dww_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A7%3A%221460688%22%3B%7D; phpbb2dww_sid=9b91b0347ebc2246778f3356ad0c2093; phpbb2dww_t=a%3A1%3A%7Bi%3A2929422%3Bi%3A1319722173%3B%7D
}


                       
Forum.Request.Referer := 'http://darkwarez.pl/forum/posting.php?mode=reply&t='+IdTematu;

 Forum.Post('http://darkwarez.pl/forum/posting.php', Input3, Output3);
 // Forum.Post('http://darkwarez.pl/forum/posting.php?mode=reply&t='+IdTematu, Input3, Output3); // zastanawiam się, czy to nie powinno być tak, ale firebug uważa, że posting.php?mode=... to referer, a post wysylam do posting.php 
StringOutput3 := Output3.DataString;
              
Forum.Request.Referer := 'http://darkwarez.pl/forum/';


{ phpbb2dww_t=a%3A1%3A%7Bi%3A2814508%3Bi%3A1319479672%3B%7D; path=/; domain=.darkwarez.pl }
               If Pos('Set-Cookie: phpbb2dww_t', StringOutput3) <> 0 then
                begin
                While Pos('Set-Cookie: phpbb2dww_t', StringOutput3) <> 1 do
                  begin
                  Delete(StringOutput3, 1, 1);
                  end;

                While Pos(':', StringOutput3) <> 1 do
                  begin
                  Delete(StringOutput3, 1, 1);
                  end;

                Delete(StringOutput3, 1, 1);

                  phpbb2dww_t := '';
                While pos(';', StringOutput3) <> 1 do
                  begin
                  phpbb2dww_t := phpbb2dww_t+Copy(StringOutput3, 1, 1);
                  Delete(StringOutput3, 1, 1);
                  end;

                  phpbb2dww_t := Trim(phpbb2dww_t);
		  Forum.CookieManager.AddCookie('phpbb2dww_t='+phpbb2dww_t, '.darkwarez.pl');
		  
                end;

Edit2.

Przeinstalowałem delphi, teraz cookie ze zbioru cookie collection są widoczne, jednak nie są wysyłane. Wyślę je manualnie. Możliwe, że w kodzie nie ma błędu, więc biorę się do pracy, ale jakbyście może coś znaleźli to dajcie znać;

edytowany 3x, ostatnio: entrick
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
1

Zamiast napisać od razu konkretnie, że kombinujesz z darkwarez.pl to byś dostał ode mnie tutaj konkretniejsze porady. Tylko, że ja mogę pomóc jedynie takim działającym kodem oraz exekiem w załączniku. Kod wykorzystuje do obsługi HTTP pakiet Synapse, nadal rozwijany i mniej według mnie o wiele problematyczny od Indy. A z tego co się orientuje to nadal można się moim programem zalogować, wyslać odpowiedź lub nowy post na "dw". Jest też logowanie na moje testowo - śmieciowe forum na jun.pl, bo kiedyś ktoś pytał o te dwa fora i miał z nimi problemy jakieś (z tego co pamiętam po prostu nie chciało mu się samodzielnie pokombinować). Jednak jeżeli uprzesz się przy zastosowaniu Indy to pomóc Ci musi ktoś inny (najpewniej tylko kAzek).

P.S.: mój kod tworzony oraz testowany był pod Delphi 7 - Personal. Z nowszymi Delphi niż wersja 2009 mogą być problemy ze stringami - wspominam o tym w moim artykule: Obsługa protokołu HTTP przy użyciu pakietu Synapse


Pozdrawiam.
edytowany 3x, ostatnio: olesio
EN
Metoda z OnRedirect na razie działa. W każdym razie wielkie dzięki za pomoc!
EN
Gratuluję przejrzystości kodu, naprawdę pięknie sformatowany :) Z pewnością się przyda
EN
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 10 lat
  • Postów:23
0
olesio napisał(a)

Zamiast napisać od razu konkretnie, że kombinujesz z darkwarez.pl to byś dostał ode mnie tutaj konkretniejsze porady. Tylko, że ja mogę pomóc jedynie takim działającym kodem oraz exekiem w załączniku. Kod wykorzystuje do obsługi HTTP pakiet Synapse, nadal rozwijany i mniej według mnie o wiele problematyczny od Indy. A z tego co się orientuje to nadal można się moim programem zalogować, wyslać odpowiedź lub nowy post na "dw". Jest też logowanie na moje testowo - śmieciowe forum na jun.pl, bo kiedyś ktoś pytał o te dwa fora i miał z nimi problemy jakieś (z tego co pamiętam po prostu nie chciało mu się samodzielnie pokombinować). Jednak jeżeli uprzesz się przy zastosowaniu Indy to pomóc Ci musi ktoś inny (najpewniej tylko kAzek).

P.S.: mój kod tworzony oraz testowany był pod Delphi 7 - Personal. Z nowszymi Delphi niż wersja 2009 mogą być problemy ze stringami - wspominam o tym w moim artykule: Obsługa protokołu HTTP przy użyciu pakietu Synapse

Twój programik postuje i dzieje się to samo co po postowaniu moim programem - wyskakuje "Błąd ogólny" na darkwarez. Może zwiększyli zabezpieczenia przeciw botom? Ale jak patrzę, to i nagłówki zapytania w twoim jak w moim programie są takie same jak w mojej przeglądarce, a poza tym są inne działające postery.

Wyskakujący text błędu ma darkwarez(linia):

Kopiuj
<th class="thHead" height="25"><b>Błąd Ogólny</b></th>
[...]
	<td align="center"><span class="gen">Wystąpił błąd</span></td>

Logowanie działa, tylko z samym postowaniem jest coś nie tak: user image

Jeśli wiesz, co jest nie tak, to pomóż proszę.

edytowany 1x, ostatnio: entrick
olesio
  • Rejestracja:prawie 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
1

Ech. Jak olesio zmęczony po robocie nie ruszy tyłka i nie napisze, to jesteście jak dzieci we mgle. Nie wstyd Wam leniuchy. Inna osoba (chyba, że to Ty pod innym znanym mi nickiem) na GG napisała mi, że też ma problem z postowaniem na dw i moim kodem, a według niej dane słane POST'em się nie zmieniły, bo porównał z tymi wysyłanymi przez przeglądarkę. A g... prawda! Przecież pod WireSharkiem czy czym kolwiek innym czym można prześledzić pakiet - wyraźnie widać, że są one inne niż były w poprzedniej wersji mojego kodu. Dla postów słanych w OffTopicu jak sprawdziłem wszystko działa po staremu. Jednak już dla tych we wstawkach są one inne i takowe są wymagane, bo to chyba sprawdza oprogramowanie forum. Również nagłówki trzeba uzupełnić w taki sposób aby pokrywały się z tymi od prawdziwej przeglądarki Obsługa protokołu HTTP przy użyciu pakietu Synapse/Artykuły/Obsługa_protokołu_HTTP_przy_użyciu_pakietu_Synapse wyraźnie napisałem, że mogą się zdarzyć strony wymagające "bogatszego" nagłowka jak http://lockerz.com gdzie wystarczy samo accept, jak w kodzie podałem. Natomiast już dla dw nie sprawdzałem, co tam konkretnie trzeba, podałem taki jaki wysyła Opera. Pisanie nowych postów w dziale OffTopic działa. Nie wiem jak będzie z innymi przy nowych postach. I ostatni raz chce mi się wracać do tego programu i pomagać leniom ;/ Jak znowu coś serwer zmieni to pokombinujcie trochę sami. Po to człowiek poświęca swój czas. Pisze arta, ale po co go czytać - prawda? Można mieć moje wypociny w głebokim poważaniu i tylko czekać na gotowca ode mnie ;/ Nie zrażajcie się jednak moim narzekaniem, bo ja teraz mam mniej czasu na klepanie jakiego kolwiek kodu. Jednak po co mi pisać że dane słane POSTem się nie zmieniły, ale nagle forum przestało działać. Jednak skoro są też różniste artykuły, dokumentacja Synapse, sniffery czy debuggery HTTP i moja porada, że należy starać się wysłać jak najbliższe prawdziwej przeglądarce dane także przy użyciu Synapse to stosujcie się do tego. Poprawioną wersję 0.4 wraz z poprawioną funkcją do przygotowania tekstu, a konkretnie zamiany znaku spacji z + na %20 dołączam do tego posta.


Pozdrawiam.
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)