소켓 POST로 쿼리보내기,(방향만이라도 잡아주십시요ㅠㅠ)
안녕하세요? 소켓을 공부하는 학생입니다. 실력이 모자라 매번 질문만 하고 있네요. 제가 할려고 하는 것은
post방식으로 서버에 쿼리를 보내서 reply를 보고 처리를 하는것입니다.
구체적으론 www.missed-call.com 이란곳에 스팸전화번호를 하나 보내서 스팸이라는 메세지를 하나 받는것이 목표입니다.
메세지를 살펴보기 위해 wpe프로그램으로 지나가는 패킷을 잡아보니 다음과 같았습니다. 문제는 이것과 똑
같은 메세지를 보내면 해결될줄 알았는데, 패킷의 구조를 잘몰라 쉽게 해결되지가 않네요. 계속 400번 잘못
된 요청이라는 메세지만 날라옵니다.
소켓으로 무슨 메세지를 보내야 하는지 알려주심 정말 감사하겠습니다. //클라이언트가 두번 메세지를 보냅
니다.
//브라우져가 서버로 보낸 첫번째 메시지
POST /nark.php HTTP/1.1\nHost: www.missed-call.com\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nAccept: text/javascript, text/html, application/xml, text/xml, */*\nAccept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3\nAccept-Encoding: gzip,deflate\nAccept-Charset: EUC-KR,utf-8;q=0.7,*;q=0.7\nKeep-Alive: 300\nConnection: keep-alive\nX-Requested-With: XMLHttpRequest\nX-Prototype-Version: 1.5.1\nContent-Type: application/x-www-form-urlencoded; charset=UTF-8\nReferer: http://www.missed-call.com/\nContent-Length: 155\nCookie: __utma=81495947.1571846267.1217770459.1217770459.1217770459.1; __utmb=81495947; __utmc=81495947; __utmz=81495947.1217770459.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)\nPragma: no-cache\nCache-Control: no-cache\n\ncmd=QUERY&data=%7B%22pnum%22%3A%20%22031-1938-1831%22%7D&Stamp=6f1716767a7c1c687967517c7b62641a751b75757f301214505d1e6d0d117167731e&rand=0.8696626671274652
//브라우져가 서버로 보낸 두번째 메시지
GET /spinner48.gif HTTP/1.1\nHost: www.missed-call.com\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1\nAccept: image/png,image/*;q=0.8,*/*;q=0.5\nAccept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3\nAccept-Encoding: gzip,deflate\nAccept-Charset: EUC-KR,utf-8;q=0.7,*;q=0.7\nKeep-Alive: 300\nConnection: keep-alive\nReferer: http://www.missed-call.com/\nCookie: __utma=81495947.1571846267.1217770459.1217770459.1217770459.1; __utmb=81495947; __utmc=81495947; __utmz=81495947.1217770459.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)\n\n
//첫번째 받는 메시지
HTTP/1.1 200 OK\nDate: Sun, 03 Aug 2008 06:57:43 GMT\nServer: Apache/2.2.8 (Unix) DAV/2 PHP/5.2.5\nLast-Modified: Sat, 03 May 2008 10:15:15 GMT\nETag: "1da540-28d5-44c50c64ef2c0"\nAccept-Ranges: bytes\nContent-Length: 10453\nKeep-Alive: timeout=5, max=100\nConnection: Keep-Alive\nContent-Type: image/gif\n\n
클라이언트의 두번째
클라이언트의 두번째 리퀘스트는 무시해도 될 것 같고
첫번째 POST에서
"ncmd=QUERY&data=%7B%22pnum%22%3A%20%22031-1938-1831%22%7D&Stamp=6f1716767a7c1c687967517c7b62641a751b75757f301214505d1e6d0d117167731e&rand=0.8696626671274652"
의 'pnum', 'Stamp', 'rand' 값만 잘 맞추어 보내면 될것 같은데요..
'pnum'이야 전화번호겠고,
'Stamp', 'rand' 이 값들이 매번 변동되는 값인것 같네요.
이 값들의 규칙만 알아내시면 될것 같은데... 아마 클라이언트 스크립트를
보시면 뭔가 나오지 않을까요?
-------------------------------------------------
$yes 4 8 15 16 23 42
\n이 아니라 \r\n으로
\n이 아니라 \r\n으로 한 줄이 끝날 겁니다.
--
임수서룬뫼 윤희수 {cppig1995/돼지군}
Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.
그냥 HTTP 요청 보내고
그냥 HTTP 요청 보내고 받는 거라면 굳이 소켓을 직접 쓸 필요는 없습니다.
libcurl을 써보세요.
http://curl.haxx.se/
감사합니다.
잠시 나갔다 온 사이 이렇게 많은 댓글이..ㅠㅠ
가르쳐 주신대로 하나씩 해보고 글남기 겠습니다.
감사합니다.
java HttpClient 라이브러리를 사용하면 10줄안에 답이 나옵니다
java HttpClient 라이브러리를 사용하면 10줄안에 답이 나옵니다
HttpClient는 jakarta 프로젝트입니다.
@.@
결과라고 올려주신게
결과라고 올려주신게 뭔가 빠져있네요.
첫번째 응답이라고 올려주신 부분은 서버로 보낸 두번째 메시지의 응답입니다.
첫번째 서버로 보낸 메시지의 분석
----------------
POST /nark.php HTTP/1.1
Host: www.missed-call.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/javascript, text/html, application/xml, text/xml, */*
Accept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: EUC-KR,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
X-Requested-With: XMLHttpRequest
nX-Prototype-Version: 1.5.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://www.missed-call.com/
Content-Length: 155
Cookie: __utma=81495947.1571846267.1217770459.1217770459.1217770459.1; __utmb=81495947; __utmc=81495947; __utmz=81495947.1217770459.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
Pragma: no-cache
Cache-Control: no-cache
cmd=QUERY&data=%7B%22pnum%22%3A%20%22031-1938-1831%22%7D&Stamp=6f1716767a7c1c687967517c7b62641a751b75757f301214505d1e6d0d117167731e&rand=0.8696626671274652
----------------------------------
보내지는 변수들은 cmd, data, stamp, rand 이렇게 4개입니다.
data에 들어가는 값은 이렇네요.
data={"pnum": "031-1938-1831"}
stamp변수는 본 페이지에 적혀 있고 rand는 어딘가에서 만들어내는 듯 합니다.
missed-call 사이트 제작자입니다
안녕하세요?
우선 missed-call에 관심을 가져주신 promise1001님께 감사드립니다.
Stamp라는 변수가 인증 토큰으로, 이 내용이 어딘가 잘못되어있으면 404를 보내도록 되어있습니다.
Stamp의 구체적인 내용을 말씀드리지 못하는 점 이해 부탁드립니다.
이때문에 소켓으로 스팸번호를 쿼리하는 시도는 비추합니다....
대신 추후 API 공개를 고려하고 있습니다.
그 때, 베타 테스트를 부탁드리는 쪽이 좋을 것 같습니다.
그럼 즐거운 하루 되시기 바랍니다.
스팸번호 검색 missed-call.com
댓글 달기