2011-01-30 1 views
0

나는 웹 사이트를위한 크롤러를 쓰고있다. 응답이 gzip으로 인코딩되었습니다.압축 풀기에 오류가 있습니까?

압축 해제가 성공했지만 특정 필드를 올바르게 구문 분석 할 수 없습니다. I는 그것을 파싱 htmlagilitypack 사용하고 , 필드

파싱 값은 일례로서, 원래 값 의 일부이다 : I가 얻고 만/wEWAwKc04vTCQKb86mzBwKln/PuCg == 은 방화를 도시하는 반면 훨씬 더 오래 실제 값 : /wEWBgKj7IuJCgKb86mzBwKln/PuCgLT250qAtC0 + 8cMAvimiNYD

결국 '=='은 무엇을 의미합니까? 압축 해제기에 오류가 있다고 가정하고 있습니까?

+0

코드를 보여줄 수 있습니까? _How_ 압축 된 데이터를 팽창시키고 있습니까?반환 된 결과를 바이트에서 문자열로 변환하고 있습니까? 그렇다면 인코딩은 무엇입니까? 등등. –

+0

==는 BAS64로 인코딩 된 문자열을 종료하는 데 일반적으로 사용됩니다. – origo

+0

이것은 읽으려는 웹 페이지의 숨겨진 필드입니다. 페이지가 gzip으로 압축되어 있으며이 필드는 다시 게시하는 동안 다시 사용되는 직접 필드입니다. 그래서 의미 론적으로 그것은 세션을 추적하는 상수 변수 일 수 있습니다. – Kushagra

답변

0

문자 =Base64 encoding으로 추가됩니다.

사람뿐만 아니라 자신의 이유에 의해, 구별된다 다음과 같은 문장을 인코딩

하지만 계속에서 기쁨의 인내에 의해, 마음의 정욕입니다 다른 동물이 유일한 열정에 의해 그리고 끊임없는 지식의 세대는 육체 쾌락의 짧은 격렬함을 초월합니다.

당신은 얻을 것

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4 =

= 문자는 Base64 문자열의 끝 부분에만 있어야합니다. 당신이 그것을 얻으면, 그것은 아마도 모든 캐릭터를 얻고 있음을 의미합니다. 그 반대의 경우는 그 문자가 패딩 문자로 사용되기 때문에 사실이 아니며 모든 Base64 구현에서 항상 필수는 아닙니다.

0

압축 풀기에 문제가 없습니다. 페이지가 분명히 정확하게 압축 해제되었습니다. 그렇지 않으면 소프트웨어에서 오류가 발생하거나 이상한 문자 만 보일 수 있습니다.

그러나 실제로 얻을 수있는 것은 Base 64 인코딩에있는 ASCII 문자열입니다. 원래 이진 데이터가 3 바이트의 배수가 아니면 끝에있는 등호가 나타납니다. 이것이 모두 완벽한 Base 64 데이터입니다.

왜 크롤러가 파이어 폭스와 파이어 폭스와 다른 데이터를 얻는가에 관해서 : 나는 모른다. 그러나 많은 이유를 이미지 할 수있다. 이들은 두 개의 개별 브라우징 세션이며 웹 사이트는 서로 다른 세션 ID를 할당하거나 세션 기록을 기록 할 수 있습니다.

아무튼, 하루가 끝나면 나는 당신의 문제를 이해하지 못합니다. 정확하게 해석 할 수없는 것은 무엇입니까? 어떤 종류의 오류가 있습니까? 필드의 의미는입니까? HTML 양식의 필드에 대해 이야기하고 있습니까?