Restsharp를 사용하여 영구적으로 인증하는 방법

authentication c# html-agility-pack rest restsharp

문제

웹에서 데이터를 가져 와서 HtmlAgilityPack을 사용하여 구문 분석하는 응용 프로그램을 개발 중입니다. 그러나 그렇게 간단하지는 않습니다. 데이터에 액세스하려면 로그인해야합니다.

Restsharp를 사용하여 다음과 같이 인증합니다.

        //class definitions 
        request = new RestRequest("http://allpoetry.com/login", Method.POST);
        request.AddParameter("utf8", "%E2%9C%93");
        request.AddParameter("authenticity_token", "Lr+JtLv7TkZrS73u5scRPbWhuUYDaVF7vd6lkKFF3FKYqNKHircT9v5WCT9EkneTJRsKXaA6nf6fiWopDB0INw==");
        request.AddParameter("referer", url);  // url to the page I want to go
        request.AddParameter("user[name]", "username");
        request.AddParameter("user[password]", "password");
        request.AddParameter("commit", "Log in");
        request.AddHeader("content-type", "application/x-www-form-urlencoded");
        response = client.Execute(request);

이것은 완벽하게 작동하지만 문제는 내가 영구적으로 로그인 할 수 없다는 것입니다. RestRequest 클래스의이 인스턴스를 사용하여 다른 요청을 할 수 없으며 로그인하지 않은 오류가 발생합니다. 해결 방법을 찾았지만 doesn은 아닙니다. 일부 페이지에서는 기본적으로 urlreferer 필드에 넣지 만 다른 페이지로 이동할 때마다 요청해야하며 불편합니다.

영구 로그인을하면 동일한 인스턴스에서 새로운 요청을 할 수 있습니까?

고맙습니다!

인기 답변

약간의 연구 끝에, 나는 대답이 쿠키라는 것을 발견했다. 요청이있을 때마다 응답에 쿠키가 있습니다. 이런 쿠키를 사용했습니다.

response = client.Execute(request) 나는 이것을 추가 :

        request.Resource = url;
        request.Method = Method.GET;
        foreach (var cookie in response.Cookies)
        {
            request.AddCookie(cookie.Name , cookie.Value);  //this adds every cookie in the previous response.
        }
        response = client.Execute(request);
       //use the response as required

이것은 새로운 인스턴스를 생성하지 않지만 같은 request 을 사용하여 추가 요청을하고 그걸 통해 모두 로그인했습니다.

도움을 주신 모든 분들께 감사드립니다!



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.