마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 1,526 명 오늘 방문자
  • 2,173 명 어제 방문자
  • 5,192 명 최대 방문자
  • 683,112 명 전체 방문자
  • 2,569 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. C#
목록으로

C# 웹 로그인 + 마이페이지 크롤링(HttpWebRequest, HttpWebResponse)

마스터욱 0 301 0 0 2018-11-29 14:44:03

특정 웹페이지 로그인후, 마이페이지의 내용을 긁어오는 소스코드입니다.

순서는 아래와 같습니다.

 

1. 웹 로그인 Action 페이지로 아이디/패스워드 값 POST로 전송

2. 아이디/패스워드 일치하면 로그인 쿠키/세션 취득

3. 획득한 쿠키/세션으로 마이페이지 크롤링

 

더 나아가면 게시판 글쓰기나 댓글쓰기도 가능하겠죵~ 헤헤

 

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.IO;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Text;
  10. using System.Text.RegularExpressions;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13.  
  14. namespace WebControl
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public Form1()
  19.         {
  20.             InitializeComponent();
  21.         }
  22.  
  23.         public static CookieContainer cookie = new CookieContainer();
  24.  
  25.         //페이지 로그인 하면서 쿠키를 받아롬
  26.         public HttpWebResponse mainLogin()
  27.         {
  28.             //REQUEST 설정
  29.             HttpWebRequest req = (HttpWebRequest)WebRequest.Create("로그인URL");
  30.             req.Method = "Post";
  31.             req.UserAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2";
  32.             string s = "mb_id=로그인아이디&mb_password=로그인패스워드"; //input테그 목록을 참조해서 바꿈
  33.             req.CookieContainer = cookie; //삽질한 부분 - 쿠키 컨테이너는 static 으로 공유되어야함
  34.             req.ContentLength = s.Length;
  35.             req.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
  36.             //req.ContentType = "text/plain";
  37.             //req.ContentType = "application/xml, text/xml, */*; q=0.01";
  38.             req.KeepAlive = true;
  39.  
  40.             //POST값 전송
  41.             TextWriter w = (TextWriter)new System.IO.StreamWriter(req.GetRequestStream());
  42.             w.Write(s);
  43.             w.Close();
  44.  
  45.             //사이트 긁어오기
  46.             HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
  47.             TextReader r = (TextReader)new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
  48.             //Console.WriteLine(r.ReadToEnd());
  49.  
  50.             //Console.WriteLine("로그인 성공");
  51.             return resp;
  52.         }
  53.  
  54.         public string loginImageURL(HttpWebResponse resp)
  55.         {
  56.             //TextReader rr = (TextReader)new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
  57.             //Console.WriteLine("rr = " + rr.ReadToEnd());
  58.  
  59.             //HttpWebResponse respBuffer = resp;
  60.             //respBuffer = resp;
  61.             Console.WriteLine("페이지 로드중");
  62.  
  63.             //로그인 (사용자 인증 후에 할 일)
  64.             HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://repoint.kr/bbs/mypage.php");
  65.             //req.UserAgent = "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.106 Safari/535.2";
  66.             //req.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
  67.  
  68.             //Console.WriteLine("resp.Cookies = " + resp.Cookies);
  69.  
  70.             //세션 쿠키 유지
  71.             req.CookieContainer = cookie; //삽질한 부분 - 쿠키 컨테이너는 static 으로 공유되어야함
  72.             req.CookieContainer.Add(resp.Cookies);
  73.  
  74.             //사이트 긁어오기
  75.             resp = (HttpWebResponse)req.GetResponse();
  76.             TextReader r = (TextReader)new StreamReader(resp.GetResponseStream(), Encoding.GetEncoding("UTF-8"));
  77.             Console.WriteLine(r.ReadToEnd());
  78.  
  79.             string htmlBuffer = r.ReadToEnd();
  80.  
  81.             return htmlBuffer;
  82.         }
  83.  
  84.         public void saveFile(string r)
  85.         {
  86.             resultbox.Text = r;
  87.  
  88.             //파일 저장 하는 구간
  89.             try
  90.             {
  91.                 //Pass the filepath and filename to the StreamWriter Constructor
  92.                 StreamWriter sw = new StreamWriter("C:\\Test.txt");
  93.  
  94.                 //Write a line of text
  95.                 sw.WriteLine(r);
  96.  
  97.                 //Close the file
  98.                 sw.Close();
  99.             }
  100.             catch (Exception e)
  101.             {
  102.                 //Console.WriteLine("Exception: " + e.Message);
  103.             }
  104.             finally
  105.             {
  106.                 //Console.WriteLine("Executing finally block.");
  107.             }
  108.         }
  109.  
  110.         private void button1_Click(object sender, EventArgs e)
  111.         {
  112.             HttpWebResponse req = mainLogin();
  113.             string content = loginImageURL(req);
  114.             saveFile(content);
  115.         }
  116.     }
  117. }
  118.  
0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
0 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 10
    C# 웹 로그인 + 마이페이지 크롤링(HttpWebRequest, HttpWebResponse)
    마스터욱
    조회수 302   18-11-29 14:44
    마스터욱
    18-11-29 14:44
    302
  • 9
    [1] C# 키움선물 API 알람 프로그램 소스코드 공개 [1]
    마스터욱
    조회수 180   18-10-19 16:57
    마스터욱
    18-10-19 16:57
    180
  • 8
    컨트롤 이름으로 컨트롤 접근 // 변수로 컨트롤 찾기
    마스터욱
    조회수 192   18-10-17 09:45
    마스터욱
    18-10-17 09:45
    192
  • 7
    C# 타이머(Timer) 대신 사용할 만한 소스
    마스터욱
    조회수 215   18-10-16 14:56
    마스터욱
    18-10-16 14:56
    215
  • 6
    C# 컨트롤(Control)값을 동적으로 호출하여, 값 세팅하기
    마스터욱
    조회수 201   18-10-14 23:33
    마스터욱
    18-10-14 23:33
    201
  • 5
    C# Local DataBase로는 뭐가 좋을까???
    마스터욱
    조회수 178   18-10-12 01:15
    마스터욱
    18-10-12 01:15
    178
  • 4
    C# DataGridView Column width 사이즈 100% 로 맞추기
    마스터욱
    조회수 195   18-10-09 05:21
    마스터욱
    18-10-09 05:21
    195
  • 3
    C# dynamic 타입 loop 돌리면서, key value 값 뽑아내기
    마스터욱
    조회수 172   18-10-04 22:14
    마스터욱
    18-10-04 22:14
    172
  • 2
    C# 컨트롤(Control) 을 돌면서(loop) 텍스트박스(TextBox) 내용입력하기.
    마스터욱
    조회수 201   18-10-04 22:13
    마스터욱
    18-10-04 22:13
    201
  • 1
    MDI(Multiple Document Interface) 폼 만들기
    마스터욱
    조회수 178   18-06-05 13:57
    마스터욱
    18-06-05 13:57
    178
글쓰기
검색

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...