그런 라벨을 달고 있는 모든 도구는 지연이 있는 크롤러입니다. 저희 도구는 약 한 달마다 새로 고침합니다. 크레딧을 낭비하지 않고 이를 스크립팅하는 방법을 확인하세요.
Linkzoid 편집팀 ·
신화 대 현실
신화
현실
매시간 폴링하면 새 링크를 더 빨리 포착할 수 있습니다
인덱스는 약 한 달에 한 번 변경되므로 30번의 폴링 중 29번은 동일한 행을 반환합니다
누락된 링크는 제거되었음을 의미합니다
마지막 새로 고침보다 최신일 뿐일 수 있습니다
더 신선한 것이 항상 더 좋습니다
트렌드의 경우, 소음이 많은 일일 데이터보다 안정적인 월간 스냅샷이 더 낫습니다
서치 콘솔은 동일한 데이터입니다
Google이 귀하의 속성에 대해 보고하는 내용을 보여주며, 이는 서로 다른 부분적인 관점입니다
유료 플랜은 크롤링을 즉시 만듭니다
어떤 벤더도 모든 페이지를 매일 크롤링하지 않습니다
월간 인덱스와 함께 작업하는 방법
대부분의 작업은 하나의 습관입니다: 매주 실행하고 매월 비교하세요.
방금 링크를 생성했고 증거가 필요하다면 인덱스를 기다리지 마세요. 페이지를 열고 소스를 확인한 후 anchor text와 rel 속성을 확인하세요. 그런 다음 다음 새로 고침을 기다리세요. Google 자체도 다시 크롤링하는 데 며칠 또는 몇 주가 필요하며, 2016년 Penguin 4.0 변경은 자체 처리를 실시간으로 만들었을 뿐, 타사 도구가 볼 수 있는 것은 실시간이 아닙니다.
엄격한 의미의 실시간 백링크 확인 도구는 웹 전체를 모니터링해야 합니다. 아무도 그렇게 하지 않으며, 오래된 데이터베이스를 매시간 다시 쿼리하는 저렴한 트릭은 동일한 답변에 크레딧을 소모하는 것입니다.
새 링크에 대한 알림 및 그 실망스러운 이유
사람들은 종종 링크가 생성되는 순간 알림을 요청합니다. 요청은 타당합니다. 정직한 답변은 월간 인덱스로는 이를 제공할 수 없다는 것입니다. 웹에 오늘 나타난 링크가 몇 주 동안 어떤 인덱스에도 도달하지 않을 수 있기 때문입니다.
반복 폴링으로 구축된 알림은 바쁘게 보이지만 새로운 정보를 알려주지 않습니다. 아래 세 가지 하위 섹션은 노력이 어디에 쓰이는지, 그리고 조용한 설정이 대신 무엇을 할 수 있는지 설명합니다.
알림이 실제로 볼 수 있는 것
알림은 인덱스가 이미 보유하고 있는 것만 모니터링할 수 있습니다. 새로 고침 사이에는 동일한 행이 다시 반환되며, 동일한 데이터로 트리거되는 알림은 단지 받은 편지함의 노이즈일 뿐입니다.
폴링은 행이 아닌 호출을 추가합니다
매시간 폴링은 하나의 답변을 위해 많은 요청을 보냅니다. 이 페이지 하단의 비용 메모는 산술을 보여줍니다. 빈도가 높아질수록 요금이 증가하지만 행은 그대로 유지됩니다.
날짜가 있는 풀링은 동일한 작업을 수행합니다
주간 작업은 날짜가 있는 파일을 작성하고, 지난주와의 diff를 통해 변경 사항을 확인합니다. 결과는 데이터의 실제 리듬과 일치하며, 새로운 행에 대해 일주일 이내에 알 수 있습니다.
누군가 지난달에 변경된 사항을 묻는 경우 파일은 증거가 됩니다. 실행 간에 파일 이름 형식을 동일하게 유지하여 파일이 자동으로 정렬되도록 하세요.
루프를 위한 문제 해결 테이블
응답
의미
스크립트가 수행해야 할 작업
HTTP 401
키 누락 또는 오류
중지, 알림, 재시도 안 함
HTTP 402
크레딧 고갈
중지, USDT로 충전 후 수동으로 다시 실행
ok: false with 200
알 수 없는 작업과 같은 잘못된 매개변수
본문을 로깅하고 작업을 실패 처리
타임아웃 또는 5xx
네트워크 또는 서버 오류
10초 및 60초 대기 후 두 번 재시도
total 이하의 행
페이지 처리가 조기에 중단되었습니다
루프를 수정하세요; 데이터는 정상입니다
잔액이 계획보다 빠르게 감소합니다
루프가 페이지를 다시 가져오고 있습니다
각 실행 전후에 _credits를 비교하세요
이중 지출을 하지 않는 재시도 래퍼
일시적 오류만 재시도됩니다. 401 및 402는 즉시 종료됩니다.
python
import json, time, urllib.request as u, urllib.error as e
def call(url, tries=3):
for i in range(tries):
try:
with u.urlopen(url, timeout=30) as r:
return json.load(r)
except e.HTTPError as x:
if x.code in (401, 402):
raise SystemExit(f'stop: HTTP {x.code}')
if i == tries - 1:
raise
except (e.URLError, TimeoutError):
if i == tries - 1:
raise
time.sleep(10 * 6 ** i)