안녕하세요. @anpigon입니다.
스캠으로 보이는 계정 @sucona이 kr-dev
에 글을 올렸습니다. 그런데 글 하단에 dclick광고가 달려있어서 의아했습니다. 과연 스캠 계정이 봇을 이용해서 dclick광고를 달수 있을까 해서 몇 가지 테스트를 해보았습니다.
DCLICK은 steemconnect 방식의 로그인을 사용하고 있으므로, 로그인할 때 포스트 권한을 DCLICK에서 위임하게 됩니다. 그래서 dclick이 글을 등록할 때 사용하는 API를 알아내면 어렵지 않을 것 같습니다.
DLICK API를 직접 호출하여 글쓰기 시도
dclick의 글쓰기 API를 호출하여 포스팅을 시도해보았습니다. [401] UnAuthorizedError
오류가 발생합니다. 로그인 상태가 아니므로 권한이 없어서 오류가 발생하였습니다.
브라우저 쿠키에 액세스 토큰 가져오기
크롬 브라우저에서 DCLICK을 로그인하여 생성된 쿠키 정보를 확인합니다. 쿠키에 JWT로 보이는 토큰이 보여서 가져왔습니다.
참고로 로그아웃하니 쿠키정보는 지워졌습니다.
JWT을 사용하여 DLICK API로 글쓰기 시도
JWT를 이용하여 다시 dclick의 글쓰기 API를 호출하여 포스팅을 시도해보았습니다. 결과적으로는 포스팅이 성공하였습니다. 결과적으로 DCLICK에서 발급받은 JWT토큰이 있으면 DCLICK API를 사용해서 포스팅 할수 있습니다.
참고로 현재 이 글은 위의 방식으로 등록한 글입니다. 등록되고 나서 내용은 수정하였습니다.
그리고 궁금한 사항이 하나 생겼습니다. JWT를 재발급 받으면 기존에 사용하던 JWT는 자동으로 폐기될까요? 이것도 테스트해보고 싶었지만 블로그가 지저분해질 것 같아 테스트는 하지 않았습니다.
여기까지 읽어주셔서 감사합니다.
Sponsored ( Powered by dclick )
DCLICK: An Incentivized Ad platform by Proof of Click - 스팀 기반 애드센스를 소개합니다.
안녕하세요 스티미언 여러분. 오늘 여러분께 스팀 블록체인 기반 광고 플랫폼 DCLICK을 소개...
이 글은 스팀 기반 광고 플랫폼
dclick 에 의해 작성 되었습니다.
보통 id에 token을 매칭해서 신규 토큰이 발행되면 id 기준 기존 token 은 expired time이 남아 있어도 비활성 처리 하고 신규 생성된 token의 정보를 활성화 하기 때문에 기존건 안될거에요
실제로 해봐도 안됨요 ㅎㅎ
단 신규 발행된 토큰은 재발행 되지 않으면 현재 dclick은 10년간 유효하므로 application - local storage 에 담긴 token 정보를 가지고 다른 곳에서 그것을 가지고 재활용하면 쓸만하네요 ㅋ
원사마님 답변 감사합니다. 덕분에 궁금한 사항이 하나 해결되었습니다.👍
^^ 보클하고 갑니다~~
보클 감사합니다. ☺
JWT가 존왓탱으로 읽히는 것은 저뿐만이 아닐거에요..😓
재미있네요.ㅎㅎ 제이와이티~ㅎㅎ
@anpigon 태그를 많이 다셨네요~?자그마치 8개!
구글 검색 엔진에 하나라도 걸리라는 마음에 많이 달았습니다.ㅋ
boddhistats님이 anpigon님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
boddhistats님의 DCLICK - TOP 200 effective curators for the last week (2018.10.15-2018.10.21)
테스트용 계정을 하나 파시는것도 나쁘지 않을 것 같은데요???ㅎㅎㅎ
근데 태그는 어떻게 저렇게 많이 다셨어요??
비지에서 수정한거 같은데 수정할때 5개로 줄여야 하지 않아요???
스팀잇API로 글을 등록하면 태그를 5개 이상 넣을 수 있습니다.
그리고 테스트 계정을 하나 만들긴 해야겠어요.ㅋ
boddhisattva님이 anpigon님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
boddhisattva님의 TOP 200 effective Steemit curators in KR category for the last week (2018.10.15-2018.10.21)
링크만 가져가도 같은 효과일듯 합니다. 얼마전 7일 지난 포스팅 수정 방법에 대해 본거 같은데 어떤 방법인지 궁긍하네요.
7일 지난 포스팅 수정이 되어야 디클릭을 제대로 써먹을텐데요 ㅎㅎ
dclick에서 글수정 기능 넣어주면 좋겠어요. 7일지난 글에도 광고를 넣을 수 있게요.ㅋ
7일 지난 포스팅 수정은 그냥 기존 rpc2.0 스팩과 동일하게 broadcast comment 하면 수정되요 ~
HF20 적용이후 그냥 글쓰기 API 만 호출하면야 7일 지난 글도 언제든 수정이 되지요 ~
오 역시 슈퍼 개발자 원사마님 혹시 원리도 아시나요? 포스팅이 껴있는 블럭 넘버가 바뀌는거겠죠?
기본적으로 글쓰기를 하면
A 블록에 글쓰기 정보가 저장 됩니다. 이때 중요한 것은 AUTHOR(계정명)과 PERMLINK (영구링크)죠
이후 해당 AUTHOR 에 PERMLINK에 글을 수정하면 @@ 가 붙어가면서 글이 수정 처리가 이뤄 집니다.( github 에 commit 하는 것과 유사 ) 그래서 블록에는 수정 정보만 기록 되고 getContent() 메소드를 사용해야지만 해당 글의 수정정보 포함된 글 정보를 볼 수 있죠 ㅋ
아마 블록정보와 별개로 내부 DB가 있어서 계정 기준 PERMLINK 의 유효성 검증 및 최근 데이터를 따로 별도로 관리 할 것입니다.
말씀하신
원 글의 블록 넘버는 변하지 않습니다. 하지만 수정 내역 정보는 블록이 계속 신규로 생성되며, 내부 DB에 의해서 해당 정보를 리턴 할 것입니다.
그래서 아래와 같이
[참조링크] https://developers.steem.io/
steem js 만 쓰다보니 이런 개념을 잘 모르고 있었네요. ㅎㅎ 감사합니다. 수정정보의 블럭까지찾아야한다면 나중에도 퍼포먼스가 나올수 있는 구조인지 궁금하네요.
역쉬 슈퍼 개발자님!
아 그래서 계속 따라 따라 가는 것은 아니고 변경 이력만 블록에 기록하고 ( 블록은 변경 이력 정보를)
별도 db에 최신 업뎃된 정보를 별도로 기록하는 것 같습니다. (DB에는 최신 업뎃된 정보를)
참고로 hive 같은 경우는 postgresql 을 사용하여 데이터를 기록하고 있지요 :)
아 기록 그 이상, 이하도 아니군요. 정말 감사합니다. ㅎㅎ
근데 그렇다면 포스팅의 데이터가 변할수 있게 구조 자체가 바껴야했을텐데....
헛...결과적으론 스팸봇도 가능한거군요...
개발자님께 간단한 질문 하나만 드려도 될까요?
스팀잇 회원 전체를 담당(?)하고있는 DB가 있나요?
스팀커넥트가 어찌 연동되는건지 궁금해서 알아보고있는데 저같은 까막눈(ㅠㅠ)은 너무 어렵습니다 흑흑
1번째 질문, 스팀잇의 블럭(회원 포함)정보는 모든 증인의 노드 서버에서 관리되고 있습니다.
스팀잇 서버에 회원DB가 별도로 존재하는지는 저도 확인해본 게 아니라서 정확한 답변은 못 드리겠네요.
그리고 2번째 질문, 저는 스팀커넥트의 내부 로직까지는 잘 모릅니다. 그래서 제가 아는 선에서 설명드릴께요.
디클릭에서 스팀커넥트로 로그인하게 되면 사용자는 권한(포스팅,보팅)이 부여된 액세스 토큰을 발급받게 됩니다.
이 액세스 토큰은 브라우저에 저장될 수 도 있고, 디클릭 서버에 저장될 수도 있습니다. DCLICK은 브라우저에 저장하는 것으로 보입니다. 하여튼 이 사용자에게 발급된 액세스 토큰을 사용하면 토큰에 포함된 권한이 허용하는 액션( 포스팅, 보팅)이 가능합니다.
대단히 감사해요
이부분은 스팀잇 진짜 100만 번째 유저는? 숨겨진 첫 번째 유저는 누구일까? 글을 쓸때 제가 해본봐로는 steemd가면 볼 수 있는 id number로 유저정보를 가져오는 방법이 없습니다. @anpigon님 혹시 js library에는 있나요?
제 생각엔 일부로 안되게 해둔것 같아요. 아니면 너무 그 api호출을 많이 할것 같아서. 너도 나도 id 0번부터 현재 모든 유저 다 긁어오려하겠죠. 시도때도 없이.
대신 무식하게 알파벳 순으로 전체 유저를 가져오는 방법이 있습니다. 꽤 오래걸려요 참고로^^ 저 위글쓸때도 그냥 무식하게 다 가져와서 id 0번 찾은겁니다. 하도 오래걸려서 찾고싶은 초기 멤버 찾곤 제가 그냥 멈췄죠. 이게 꽤 오래걸려서 비효율적이니 해당 함수를 굳이 자주 안부르게 되는 효과가 있더군요ㅎㅎ 저도 그때 한번 써보고 안쓰네요^^
물론 id number 순서대로 가져오고 싶다면 또다른 방법이 있긴한데 이건 더 오래걸리는 방법이라ㅎㅎ
이렇게 블록체인에서 직접 데이터를 가져오는 것이 지나치게 비효율적이라 steemsql이라고 블록체인 데이터를 일반 db에 옮겨담아놓은것이 있습니다. 유료서비스죠. 이를 통해 조회하면 순식간에 조회 할수가 있죠. 초기엔 버그도 좀 있었던것 같은데 이젠 아마 잘 돌아갈듯.
steemjs에도 id number로 유저정보를 가져올 수 있는 방법이 없습니다.
와우, 이런거에 관심있어 파고드는 분들보면 신기해요^^
(보클꾹~)
응원 + 보클 감사합니다~^^
@anpigon님 곰돌이 자다 깨서 보팅 왔어요. 그럼 전 다시 꿈나라로~ @gomdory 곰도뤼~
곰돌이님 감사합니다.
역시 대단하시네요. 조만간 dclick 공식 API가 나오길ㅠㅠ dclick에서 글쓰기는 너무 귀찮고 나중에 광고만 복사하는건 매번 까먹게되고ㅠㅠ
저도 디클릭 공식 API가 나왔으면 좋겠습니다. 아직은 디클릭에서 글 작성하는 것이 많이 불편합니다.ㅠ 하지만 디클릭에서 오픈API를 열어주면 좀더 편해질것 같아요.ㅋ
혹시 firebase도 쓰시나요? 거기 realtime db를 써서 dclick처럼 encoding된 주소요청하면 redirect되는 기능을 구현하려는데 function연결을 뭘 잘못했는지 fuction으로 연결이 잘안되네요ㅠㅠ 이게 제생각으론 그 주소가 실존하는게 아니라 rewrites를 function에 연결해서 function내부에서 decoding해서 redirect할 페이지를 넘겨주는 것일텐데. 방법만 알면 무지 간단한 작업일 것 같은데. 혹시 이런게 잘 설명되어있는 예제있으면 좀 부탁드릴게요. 참고로 제가 찾아본건 https://hackernoon.com/firebase-to-the-rescue-dynamic-routing-via-hosting-functions-integration-aef888ddf311 입니다. 비슷하게 해봐도 잘안되네요. 로그봐도 함수를 전혀 안부르는듯. 뭔가 다른 세팅(너무 당연한건데 제가 몰라서 안해준듯한)을 해줘야 연결이 될 것도 같고. 꼭 firebase아니어도 상관없구요. 비슷한 기능을 쉽게 구현할수만 있으면 됩니다. db는 아무거나 써도되니. firebase가 생각보다 무료제공용량이 높아서 써볼려고요 기존에는 mongodb쓰고 있는데. 감사합니다!
firebase는 db 용량을 무료 1기가나 주는군요. 역시 구글은 대인대입니다.ㅋ 제가 아는 https://mlab.com/ 요기는 500M 밖에 안줘서ㅎㅎ 참고로 mlab는 몽고DB입니다.
그런데 firebase는 저도 사용해보지 않아서 좀 봐야할 것 같아요. 보내주신 링크를 참고해서 저도 한번 해볼께요. 저도 도움이 되어드리고 싶어요.
그쵸 빅데이터의 시대다보니 많이주기엔 부계정만들면 끝도 없어서 요새 db는 거의 무료가 500이더라고요. 머나먼 예전엔 아예 호스팅 업체는 db는 따로 쿼터가 없는 경우가 많았는데ㅎㅎ firebase쓰시면 좋을거에요. 주변에 듣기론 요새 많이 쓰더라고요. 아무래도 구글이하니.
firebase 를 잠깐 살펴보니 ML기능이 탐나네요.ㅎ firebase도 한번 연구(공부?)해봐야겠어요. db용량이 혜자스럽습니다.ㅋ
Hi @anpigon!
Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 2.460 which ranks you at #17216 across all Steem accounts.
Your rank has dropped 365 places in the last three days (old rank 16851).
In our last Algorithmic Curation Round, consisting of 270 contributions, your post is ranked at #144.
Evaluation of your UA score:
Feel free to join our @steem-ua Discord server
@sucona 헐... 날따라 하다뉘 ~~ 나름 저도 이제 유명인 ? 후훟 일단 깔끔하게 다운봇 올만에 날려봤네요 후훟