Golang 구현은 : https://jsty.tistory.com/351 (korea-pki) 에 있습니다.
korea-scraper 는 Java 로 개발 된 정부 사이트 스크래핑을 위한 기본 구현 라이브러리입니다.
비동기 호출 기반의 스크래핑 및 headless 공인인증서 로그인이 구현되어 있습니다.
개발 의뢰 요청 시 해당 라이브러리를 바탕으로 세부 구현을 만들어 드립니다.
특징
비동기 HTTP 호출 사용
apache http clients 5 의 CloseableHttpAsyncClient 와 CompletableFuture 을 사용하여 non-blocking 구현 사용으로 인해 I/O 및 Thread 에 대해 효율적으로 동작 가능하다.
SequenceMachine 구조 사용
StateMachine 과 유사한 SequenceMachine 구조를 개발하여 transaction 에 대해 Step 별로 구현한 것을 SequenceMachine 으로 묶어 하나의 클래스로 구현한다.
그리고 각 Step 의 결과(State) 를 Serialization 하여 저장할 수 있다. 이를 통해 진행 중 일시적 오류 발생 / 리포트 재-다운로드 / 개발 중에 많은 요청을 해야 하는 경우 등에서 이미 실행한 요청을 재-실행하지 않고 이어서 실행할 수 있다.
Java + Gradle (kotlin-dsl) 사용 및 Java Library 구현
korea-scraper core (공통 사용) 부분과 별도의 사이트용 구현 (customized) 으로 구분되어 있습니다.
모든 부분은 Java Library 로 빌드 됩니다.
따라서 각 모듈 부분에 대한 관리가 용이하고, 라이브러리 형태로 쉽게 사용할 수 있습니다.
AnySign Xgate 구현 가능
대부분의 사이트에는 xgate 가 불필요하지만, 일부 특정 레거시 사이트 (인터넷 등기소 등) 의 경우에는 반드시 anysign xgate 를 구현할 필요가 있습니다.
이런 경우에도 대응할 수 있도록 AnySign4PC에 websocket 으로 연결하여 blockEnc2 등이 가능합니다.
이 또한 Netty 를 이용하여 비동기 동작으로 효율적으로 구현되어 있습니다.
fun main() {
val group = NioEventLoopGroup(1)
val client = Anysign4PcClient.builder()
.origin("www.site-name.go.kr")
.build(group, URI.create("wss://localhost:10531/"))
client.setAttributeInfo(listOf(
"check_Version=1.1.2.0",
"put_LicenseN=30820...",
"put_License2N=308207..",
"put_StorageN=HARD,REMOVABLE,ICCARD,PKCS11,USBTOKEN,MOBISIGN,MPHONE,CSP",
"put_LanguageN=ko-KR",
"put_CharsetN=euc-kr",
"put_ProxyUsageN=",
"put_TransKeyN="
)).get()
.let { result ->
println(result)
}
client.blockEnc2(BlockEnc2Params(
xgateAddress = "site-ip:1443:18080",
path = "get path",
param = "get params",
method = "GET",
charset = "euc-kr"
)).get()
.let { result ->
println(result)
}
}
구현 예시
구현 사례
- 정부24 공인인증서 로그인
- 홈택스 공인인증서 로그인
- 홈택스 간편인증 로그인
- 홈택스 발급 스크래핑
- 4대사회보험정보연계센터 발급 스크래핑
- 사회보험통합징수포털 발급 스크래핑
- 위택스 발급 스크래핑
- 중소벤처24 발급 스크래핑
- 인터넷 등기소 발급 스크래핑 (Anysign, IPRT, 가상프린터 구현)
- 국민 건강 보험 스크래핑
- 캡챠 solver 개발을 통한 자동 로그인 : https://jsty.tistory.com/368
- 기업은행 계좌 목록 / 거래 내역 스크래핑
모든 구현은 java 로 직접 로그인 알고리즘( AnySign, VidMsg, pkcs1, seed 인증서 암호화)등을 구현하여 selenium 없이 headless 로 동작합니다.
인터넷등기소의 경우 Anysign blockenc2와 IPRT 프로그램 동작으로 인해 발급 과정 중 non-headless 로 동작하며, windows os 가 필요합니다.
문의 : joseph@jc-lab.net
개발 이력/스크래핑 내역
- 공인인증서 로그인 개발
- 간편인증(토스/카카오 등) 로그인 개발
- NPKI 로그인 개발
- 정부24 스크래핑 개발
- 홈택스 스크래핑 개발
- 인터넷 등기소 스크래핑 개발
- 인터넷등기소 IPRT IPRTCrsIgmPrintXCtrl
- markany maepscourt
- anysign anysign4pc blockEnc2 blockDec2
- nProtect pluginfree KeyPad __E2E_KEYPAD__ __E2E_UNIQUE__
node.js 에서 seed 알고리즘 구현 및 인증서 복호화는 korea-forge 으로 가능합니다.
https://github.com/jc-lab/korea-forge
공인인증서 로그인 소스
간편인증 로그인 소스
'내가만드는것_만든것 > 프로그램-판매' 카테고리의 다른 글
(GoLang / Java) 정부24/홈택스 공동인증서 로그인 구현 소스 (0) | 2023.11.02 |
---|---|
Go로 제작된 가상 프린터 엔진 (0) | 2023.10.03 |
MFC로 만든 단일실행 자동 업데이터 소스! (많은 기능/편리) (32/64bit감지/TaskBar표시/개별파일업데이트/보안통신 등) (5) | 2016.05.12 |
JsSafeCrypto 메모리보안 암호화 소스 (C/C++) (0) | 2015.07.31 |
VB.Net/C#.Net 자동 업데이터 (많은 기능/편리) (32/64bit감지/TaskBar표시등) (2) | 2015.07.31 |
댓글