유료 매크로 프로그램 다운로드
http://ngmsoftware.com/bbs/board.php?bo_table=product_review
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #엔지엠에디터 #엔지엠플레이어 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화
- 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
- 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
- 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)
안녕하세요. 엔지엠소프트웨어입니다. 오늘은 웹브라우저 쿠키를 제어할 수 있는 액션을 만들어 볼건데요. 사실, 웹개발자가 아니면 쿠키가 뭔지 왜 이런걸 만들어서 사용하는지 잘 모를 수 있습니다. 개발자라 하더라도 윈도우 프로그램이나 서버 프로그램을 주로 했던 분들도 잘 모를 수 있습니다. 웹개발 아니면 사실 쓸일이 없으니까요. 우선, 쿠키가 뭔지 알아봐야겠네요. 쿠키는 보통 HTTP 쿠키 또는 브라우저 쿠키라고 부릅니다.
쿠키는 웹 서버가 생성하여 웹 브라우저로 전송하는 작은 정보 파일입니다. 웹 브라우저는 수신한 쿠키를 미리 정해진 기간 동안 또는 웹 사이트에서의 사용자 세션 기간 동안 저장합니다. 웹 브라우저는 향후 사용자가 웹 서버에 요청할 때 관련 쿠키를 첨부합니다. 쿠키는 웹 사이트에 사용자에 대한 정보를 제공하여 웹 사이트에서 사용자 경험을 맞춤화하는 데 도움이 됩니다. 예를 들어, 전자 상거래 웹 사이트에서는 쿠키를 사용하여 사용자가 장바구니에 어떤 상품을 담았는지 파악합니다. 또한 인증 쿠키(아래 참조)와 같이 보안을 위해 필요한 쿠키도 있습니다. 대부분의 웹과 마찬가지로 쿠키는 HTTP 프로토콜을 사용하여 전송됩니다.
웹소켓을 이용해서 트레픽을 발생시키거나 조회수나 검색등등... 마케팅에 필수적으로 사용되는 정보가 쿠키입니다. 일반적으로 셀레니움으로는 한계가 있기 때문에 웹소켓을 이용하는데요. 엔지엠 매크로에는 쉽게 사용할 수 있는 액션들이 존재합니다. 그렇더라도 자신이 사용할 사이트의 쿠키 정보는 어느정도 알고 있어야 합니다. 네이버의 경우에는 JSESSIONID를 사용합니다. 이외에도 PHPSESSID와 ASP.NET_SessionId와 같은 닷넷 쿠키도 있습니다.
쿠키 모델을 하나 만들어주세요.
기본적으로 쿠키도 웹 관련 기능이기 때문에 웹 베이스 모델을 상속 받아야 합니다.
public class CookieModel : WebBaseModel
속성들은 쿠키의 정보를 탐색할 수 있는 것들로 되어 있습니다. 대부분 쿠키의 값은 암호화되어 저장되기 때문에 클라이언트에서 내용을 확인하기란 쉽지 않습니다. 하지만, 쿠키 정보를 임의적으로 재사용하기 위해 필요하기도 합니다. 예를 들어서 로그인 관련 인증 정보를 서버와 클라이언트가 쿠키로 비교하는데요. 동일한 도메인의 사이트라면 이 내용으로 세션이 만료되기 전 인증을 유지할 수 있게됩니다. 이 내용은 고객 자료실 내용을 참고해보세요.
[LocalizedCategory("Data")]
[LocalizedDisplayName("CookieNames")]
[LocalizedDescription("CookieNames")]
[Browsable(true)]
[DefaultValue(null)]
public string[]? CookieNames { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("CookieValue")]
[LocalizedDescription("CookieValue")]
[Browsable(true)]
[DefaultValue(null)]
public string? CookieValue { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("CookiePath")]
[LocalizedDescription("CookiePath")]
[Browsable(true)]
[DefaultValue(null)]
public string? CookiePath { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("CookieDomain")]
[LocalizedDescription("CookieDomain")]
[Browsable(true)]
[DefaultValue(null)]
public string? CookieDomain { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("SameSite")]
[LocalizedDescription("SameSite")]
[Browsable(true)]
[DefaultValue(null)]
public string? SameSite { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("IsHttpOnly")]
[LocalizedDescription("IsHttpOnly")]
[Browsable(true)]
[DefaultValue(false)]
public bool IsHttpOnly { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("Secure")]
[LocalizedDescription("Secure")]
[Browsable(true)]
[DefaultValue(false)]
public bool Secure { get; set; }
[LocalizedCategory("Data")]
[LocalizedDisplayName("CookieExpiry")]
[LocalizedDescription("CookieExpiry")]
[Browsable(true)]
[DefaultValue(null)]
public DateTime? CookieExpiry { get; set; }
브라우저 쿠키를 모두 확인할 수 있습니다. 그래서, 데이터에 쿠키 이름 목록이 필요합니다. 이미 쿠키 이름을 알고 있다면 상관 없지만, 접속한 사이트가 어떤 쿠키를 사용하는지 알려면 일단 한번 실행해야 합니다. 그리고, 쿠키 정보를 가져와서 분석할 수 있습니다. 앞의 강좌에서 알아본것처럼 새 사용자를 만들고, 해당 폴더에 쿠키 정보를 심으면 로그인 정보나 장바구니 상품 정보등등... 다양한 것들을 처리할 수 있습니다.
액션은 2가지입니다. 웹브라우저의 쿠키를 제어하려면 쿠키 이름을 알아야 합니다. 그리고, 어떤 동작을 수행할지 선택해야 하겠죠?
[LocalizedCategory("Action")]
[LocalizedDisplayName("CookieName")]
[LocalizedDescription("CookieName")]
[Browsable(true)]
[DefaultValue(null)]
public string? CookieName { get; set; }
[LocalizedCategory("Action")]
[LocalizedDisplayName("CookieOption")]
[LocalizedDescription("CookieOption")]
[Browsable(true)]
[DefaultValue(typeof(Ai.Definition.AddDelete), "None")]
public Ai.Definition.AddDelete CookieOption { get; set; } = Definition.AddDelete.None;
쿠키 제어는 None을 제외한 3가지 옵션이 있습니다. 쿠키를 추가하거나 삭제 또는 모든 쿠키를 제거할수도 있습니다.
public enum AddDelete
{
None = 0,
Add = 1,
Delete = 2,
AllDelete = 3
}
옵션에 따라서 로직을 분기하고, 각각의 동작을 구현해줍니다.
public override string? Execute(IPlayer player)
{
var id = base.Execute(player);
var driver = player.Manager.WebDrivers[WebName];
CookieNames = driver.Manage().Cookies.AllCookies.Select(s => s.Name).ToArray();
if (!string.IsNullOrEmpty(CookieName))
{
switch (CookieOption)
{
case Definition.AddDelete.Add:
driver.Manage().Cookies.AddCookie(
new OpenQA.Selenium.Cookie(
CookieName,
AddCookieValue,
AddCookieDomain,
AddCookiePath,
AddCookieExpiry,
AddSecure,
AddIsHttpOnly,
AddSameSite));
break;
case Definition.AddDelete.Delete:
driver.Manage().Cookies.DeleteCookieNamed(CookieName);
break;
case Definition.AddDelete.AllDelete:
driver.Manage().Cookies.DeleteAllCookies();
break;
}
var cookie = driver.Manage().Cookies.GetCookieNamed(CookieName);
if (cookie != null)
{
CookieValue = cookie.Value;
CookiePath = cookie.Path;
CookieDomain = cookie.Domain;
SameSite = cookie.SameSite;
IsHttpOnly = cookie.IsHttpOnly;
CookieExpiry = cookie.Expiry;
}
}
return id;
}
실제 구현 내용을 보면 크게 어려운건 없을겁니다. 이 내용을 토대로 테스트를 해보면, 쿠키 정보도 확인할 수 있고 새로운 쿠키를 만들어서 추가할수도 있습니다. 아래는 네이버에 접속한 후 쿠키 이름 목록을 모두 가져왔습니다. 쿠키 이름을 알면, 네이버의 모든 쿠키 정보를 확인할 수 있습니다.
쿠키 액션에서 쿠키 이름을 추가하면 해당 쿠키의 모든 정보를 확인할 수 있습니다.
쿠키를 제어하는 옵션에 따라서 삭제하거나 추가할 수 있습니다.
아래 동영상을 참고해서 동작을 테스트 해보세요.
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
원본 글 보기
http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
댓글