기본 Captcha 이미지가 포함 된 웹 페이지가 있습니다. 웹 사이트에서 이미지를 다운로드하고 Tesaract를 사용하여 해결했습니다. 이 함수를 사용하여 다운로드하지 않고 Timage 객체에 이미지를 표시합니다. 델파이 페이지를 새로 고침하지 않고 이미지 다운로드
FUNCTION DownloadImage(CONST URL : STRING ; ImageType : TGraphicClass = NIL) : TBitMap;
VAR
HTTP : TIdHttp;
S : TStream;
IMG : TGraphic;
STR : AnsiString;
LHandler: TIdSSLIOHandlerSocketOpenSSL;
BEGIN
HTTP:=TIdHttp.Create(NIL);
LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
TRY
HTTP.IOHandler:=LHandler;
S:=TMemoryStream.Create;
TRY
HTTP.Get(URL,S);
IF NOT Assigned(ImageType) THEN BEGIN
S.Position:=0;
SetLength(STR,5);
S.Read(STR[1],LENGTH(STR));
IF COPY(STR,1,2)='BM' THEN
ImageType:=TBitMap
ELSE IF COPY(STR,1,3)='GIF' THEN
ImageType:=TGIFImage
ELSE IF COPY(STR,2,3)='PNG' THEN
ImageType:=TPngImage
ELSE IF (ORD(STR[1])=$FF) AND (ORD(STR[2])=$D8) THEN
ImageType:=TJPEGImage
END;
IF NOT Assigned(ImageType) THEN RAISE EInvalidImage.Create('Unrecognized file format!');
IMG:=ImageType.Create;
TRY
S.Position:=0;
IMG.LoadFromStream(S);
Result:=TBitMap.Create;
TRY
Result.Assign(IMG)
EXCEPT
Result.Free;
RAISE
END
FINALLY
IMG.Free
END
FINALLY
S.Free
END
FINALLY
HTTP.Free
END
END;
또는 다운로드 이미지
문제가 웹 사이트에 연결하는 기능을 모두 이미지를 얻을 이로 인해 나는 내 양식 다운로드 보안 문자 사진을 웹 브라우저로 페이지를 탐색 할 때입니다function DownLoadInternetFile(Source, Dest : String): Boolean;
begin
try
Result := URLDownloadToFile(nil,PChar(Source),PChar(Dest),0,nil) = 0
except
Result := False;
end;
end;
및 브라우저 페이지의 captcha 그림이 다르다. 내가하고 싶은 것은 embedwb 나 webbrowser 객체의 그림을 문서가 완성 될 때 직접 가져 오는 것이다. 또한 런타임시 webbrowser의 스크린 샷을 얻으려고 시도하지만 실패했다. 웹 페이지는 다음과 같다. "https://esgm.sgk.gov.tr/Esgm/", 미리 감사드립니다. 나쁜 영어에 대해 죄송합니다.
captcha는 수행하려고 시도하는 것을 멈추게합니다. 당신이 그것을 격파한다면, 당신은 당신 자신의 기술로 그렇게 할 수 있습니다! –
이 문제에 대한 잘못된 접근 방식을 사용하고 있습니다. Captcha가 어떻게 작동하는지 파악한 다음, Captcha를 물리 칠 방법을 찾아야합니다. 힌트 : 동일한 이미지를 두 번 가져 오지 마십시오. 페이지의 HTML은 항상 동일하며 새로 고침 할 때마다 쿠키가 변경되지 않습니다. 그것은 100 % 서버 측이고, 그것이 약점입니다. –