C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[28532] Re:Re:웹페이지의 입력박스에 ID와 페스워드를 입력하려면...
강재호.만해 [greenuri] 1446 읽음    2004-01-15 20:38
안녕하세요 만해입니다.

저도 잘 모르는 상태이긴 하지만~ 아는것만 갈켜 드릴께요
<cite>
<form name="loginform" method="post" autocomplete="off" action="http://login.daum.net/Mail-bin/login.cgi?dummy=1479874649" onsubmit="setAction();">
<table border="0" cellpadding="0" cellspacing="0" width="210">
<tr>
    <td height="21"><img src="http://image.hanmail.net/hanmail/top/0303/t_login.gif" width="35" height="13" hspace="6"></td>
    <td align="right" valign="bottom" class="txt2" style="padding-bottom:1pt" height="19" nowrap>
        <!--input type="radio" name="loginmode" value="ssl"-->
        <!--A href=""><img name=bar16 src="http://image.hanmail.net/hanmail/top/0303/ic_key_open.gif" width="10" height="11" border="0" alt="보안접속 해제 상태입니다"></a-->
        <!--a href=""><img src="http://image.hanmail.net/hanmail/top/0303/ic_key_closed.gif" width="10" height="11" border="0" alt="보안접속 적용 상태입니다"></a-->
        <input type="checkbox" name="loginmode" value="ssl"><a href="javascript:toppop('http://www.daum.net/doc/login_noti.html?_top_login&secu','pop','520','400','no','yes');" class="stit">보안접속</a> |
        <a href="http://register.daum.net/?_top_login®ister" class="stit">회원가입</a>

    </td>
</tr>
<tr><td colspan="2"><img src="http://image.hanmail.net/hanmail/top/0303/l_1.jpg" width="210" height="3"></td></tr>
</table><br style="font-size:9">

<table border="0" cellpadding="1" cellspacing="0" width="199" align="center">
<tr>    <td align="right" nowrap>아이디</td>
        <td><font size="3" face="굴림체"><input type="text" name="id" size="12" style="font-size:9pt;"></font></td>
        <td><img src="http://image.hanmail.net/hanmail/top/addr_hanmail.gif" width="55" height="9"></td>
</tr>
<tr>    <td align="right" nowrap>비밀번호</td>
        <td><font size="3" face="굴림체"><input type="password" name="pw" size="12" maxlength="8" style="font-size:9pt;"></font></td>

        <td align="left">
            <input type=image src="http://image.hanmail.net/hanmail/top/0303/b_login_.gif" width="53" height="22" border="0" align="absmiddle" alt="로그인">
    </td>
</tr>
</form>
</cite>
우선 위의 HTML을 보면 다음의 초기화면 소스를 가져 온것인데요
<kbd><form name="loginform" method="post" autocomplete="off" action="http://login.daum.net/Mail-bin/login.cgi?dummy=1479874649" onsubmit="setAction();"></kbd>

위의 Form 태그 있는 부분을 해석하면 loginform 이라는 이름을 가지는 form 객체가 있고 웹서버로 자료를 전송하는 방식은 post이며 Action에 기본 인자값은 http://login.daum.net/Mail-bin/login.cgi?dummy=1479874649 이렇게 되어 있습니다.

여기서 사용자의 ID는 <kbd><td align="right" nowrap>아이디</td>
<td><font size="3" face="굴림체"><input type="text" name="id" size="12" style="font-size:9pt;"></kbd>

여기 있는 테그에 저장이 되고 이것은 loginform객체의 id를 통해 설정이 가능해 집니다.

그리고 사용자의 암호는 비밀번호
<kbd><td><font size="3" face="굴림체"><input type="password" name="pw" size="12" maxlength="8" style="font-size:9pt;"></kbd> loginform객체의 password를 통해 설정이 가능해 지는데요

자료를 전달 하는 방식은 post이기 때문에 HTTP접속할때 POST방식으로 같이 보내 줘야 하고요

이걸 조합하면

LoginForm
   + - dummy = 1479874649
   + - id : 사용자 계정
   + - password : 사용자 암호

이렇게 실어서 보내 줘야 합니다.

이걸 POST방식으로 보내 줄려면

void WebPostData(TCppWebBrowser *CppWebBrowser, String sURL, String sPostData)
{
  BSTR bstrHeaders = NULL;
  TVariant vFlags = {0}, vTargetFrameName={0}, vPostData={0}, vHeaders={0};
  LPSAFEARRAY psa;
  LPCTSTR cszPostData = sPostData.c_str();
  UINT cElems = lstrlen(cszPostData);
  LPSTR pPostData;
  LPVARIANT pvPostData;

  bstrHeaders = SysAllocString(L"Content-Type: application/x-www-form-urlencodedrn");
  if (!bstrHeaders){
    Application->MessageBox("Could not allocate bstrHeaders", "Warning", MB_OK | MB_ICONWARNING);
    return;
  }

  V_VT(&vHeaders) = VT_BSTR;
  V_BSTR(&vHeaders) = bstrHeaders;

  pvPostData = vPostData;

  if(pvPostData){
    VariantInit(pvPostData);

    psa = SafeArrayCreateVector(VT_UI1, 0, cElems);
    if(!psa){
      return;
    }

    SafeArrayAccessData(psa, (LPVOID*)&pPostData);
    memcpy(pPostData, cszPostData, cElems);
    SafeArrayUnaccessData(psa);

    V_VT(pvPostData) = VT_ARRAY | VT_UI1;
    V_ARRAY(pvPostData) = psa;
  }

   CppWebBrowser->Navigate((TVariant)sURL, &vFlags, &vTargetFrameName, &vPostData, &vHeaders);
}
이 함수를 이용해서 잘 조작 하면 됩니다.

그런데 다음 같은 사이트에서 로그인 하는데 달랑 더미 번호랑 사용자 계정, 암호만 가지고 하지는 않겟죠

아마 알려지지 않은 다른 필드가 있을거라고 생각이 되네요

델마당의 Web spy 같은 프로그램으로 실제 전송되는 정보가 무엇인지 찾아 보시길 바랍니다.

그럼 이만~

+ -

관련 글 리스트
28507 웹페이지의 입력박스에 ID와 페스워드를 입력하려면... roky 826 2004/01/14
34265     Re:웹페이지의 입력박스에 ID와 페스워드를 입력하려면... 강재호.만해 958 2004/01/15
34264     Re:웹페이지의 입력박스에 ID와 페스워드를 입력하려면... 김태선 989 2004/01/14
28531     Re:웹페이지의 입력박스에 ID와 페스워드를 입력하려면... roky 970 2004/01/15
28532         Re:Re:웹페이지의 입력박스에 ID와 페스워드를 입력하려면... 강재호.만해 1446 2004/01/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.