고객 지원 문의

이메일로 답장드리며, 보통 이틀 안에 회신합니다.

Google reCAPTCHA가 이 제출을 악용 여부에 대해 확인하며, 이 과정에서 데이터가 Google로 전송됩니다. 스크립트는 이 양식을 열 때만 불러옵니다.

← 전체 글

curl로 시험하면 엉뚱한 것을 시험합니다

콘텐츠와 검토에 관하여

이 글의 내용

브라우저 신원 없이 들어온 카운터 요청은, 세어진 방문이 보통 건드리는 열두 자리 가운데 둘에만 씁니다. 200으로 답합니다. 유효한 카운터 그림을 돌려줍니다. 열둘 가운데 열이 건너뛰어졌다고 말해 주는 것은 어디에도 없습니다.

사용자 에이전트 없음 — 12 가운데 2 curl의 기본값 — 12 가운데 2 브라우저 신원 — 12 가운데 10 셋 모두 작동하는 카운터 그림과 함께 200으로 답했습니다

그 거르개는 무엇을 위한 것이고, 값은 얼마인가

여기 카운터는 로봇과 사람을 가르고, 그 가름은 클라이언트가 스스로 밝히는 신원으로 합니다. 표시 목록은 짧고 일부러 뜻이 분명하며, curl/가 거기 있습니다. 빈 신원도 그렇습니다. 사용자 에이전트가 아예 없는 요청은 브라우저가 아니라는 논리에서입니다.

둘 다 옳습니다. 맨 curl을 로봇으로 다루는 것이 서비스의 잘못은 아닙니다. 실제로 그러하니까요. 문제는 curl을 모는 사람이 대개 로봇 탐지가 작동하는지 시험하고 있는 것이 아니라는 점입니다. 계수가 작동하는지 시험하고 있는데, 조용히 로봇 경로를 청한 것입니다.

그들이 받는 것: 그날의 조회 합계가 하나 오르고, 봇 칸이 하나 오르고, 그것이 전부입니다. 순 방문자 줄이 없으니 방문자에 관한 것은 아무것도 없습니다. 접속자 목록에도 없습니다. 페이지도, 나라도, 브라우저도, 운영체제도, 기기도, 시간대도 없습니다. 누구든 실제로 확인하고 싶어 할 부분이 바로 돌지 않은 부분입니다.

그 실패에는 증상이 없습니다

여기가 머무를 값어치가 있는 대목입니다. 아무것도 재지 않는 검사는 보통 스스로를 알립니다. 오류, 빈 결과, 숫자가 있어야 할 자리의 0 같은 것으로 말입니다. 여기서는 응답이 200입니다. 본문은 진짜 카운터 그림이고 3,361바이트입니다. 그림 속 숫자까지 올라갔습니다. 실제로 일어난 두 가지 가운데 하나가 조회 합계이기 때문입니다.

그러니 검사는 통과처럼 보입니다. 그 아래의 모든 것 — "계수 경로가 작동한다", "새 칸이 쓰이고 있다", "이 변경이 아무것도 망가뜨리지 않았다" — 은 원래 훑어야 했던 코드의 대부분을 건너뛴 실행에서 끌어낸 결론입니다.

이 글을 쓰는 동안 일어났습니다

이 글 뒤의 측정 첫 판본은 /c/<number>를 요청했습니다. 그것은 카운터 그림의 주소가 아닙니다. 진짜 주소는 디자인과 확장자를 지닌 /c/<number>-<design>.png입니다. 요청은 404를 돌려주었습니다.

스크립트는 세 번 이렇게 찍었습니다: 12자리 가운데 0에 씀. 참이고, 동시에 작동하는 봇 거르개가 얼핏 보이는 모습과 정확히 같습니다. 404는 출력에, 같은 표에, 0들 바로 위 줄에 있었습니다. 1분 동안 읽히지 않았습니다. 0이 흥미로운 부분이었고 기대와 맞았기 때문입니다.

그것은 이 글이 다루는 것과 같은 잘못이 한 단계 위에서 일어난 것입니다. 아무도 확인하지 않은 까닭으로 그럴듯한 답을 내놓은 측정 말입니다. 잡힌 것은 오직 스크립트가 요청을 믿는 대신 열두 표의 줄을 셌기 때문입니다 — 실패한 요청과 걸러진 요청은 밖에서 보면 똑같아 보입니다.

대신 무엇을 할 것인가

브라우저 신원을 보내십시오. 진짜 사용자 에이전트 문자열과 함께 플래그 하나 -A면, 같은 요청이 둘이 아니라 열두 자리 가운데 열에 씁니다.

그리고 반대편에서 무언가를 세십시오. 응답 코드는 요청이 도착했다고 말합니다. 요청이 무엇을 했는지는 아무 말도 하지 않습니다. 부수 효과가 핵심인 모든 것 — 카운터, 대기열, 로그 한 줄, 어딘가의 한 줄 — 에 대해 검사는 그 부수 효과를 보아야 합니다. 관련된 모든 표에 대한 전후 셈은 여기서 스무 줄이 들었고, 모호한 결과를 두 번 명확하게 만들었습니다. 한 번은 거르개에 대해, 한 번은 404에 대해.

브라우저 신원을 주어도 열두 자리 가운데 둘은 비어 있었습니다. 봇 칸은 마땅히 그랬고, 참조 목록은 보낸 참조를 기록하지 않았습니다. 두 번째 것은 여기서 설명하지 않습니다. 아직 쫓아가 보지 않았기 때문입니다. 보고하는 것은, 다른 길이 열한 줄짜리 표를 내놓고 열둘이라 부르는 것이기 때문입니다.

광고