Extraia Dados do GitHub Além do Limite de Taxa da API: Estrelas, Dependentes
A API do GitHub limita chamadas não autenticadas a 60 por hora e esconde completamente dependentes e tendências. Veja como minerar os sinais que importam usando IPs baratos.
O GitHub é uma mina de ouro para pesquisa - curvas de adoção, impulso de concorrentes, gráficos de dependência, sinais de contratação - e sua API oficial lhe oferece uma fatia disso gratuitamente. Depois, ela para. Chamadas não autenticadas são limitadas a 60 por hora, e os dois conjuntos de dados mais desejados, o gráfico de dependentes e a página de tendências, não estão na API de forma alguma. Este guia cobre como extrair dados do GitHub além desses limites: o que a API oferece, o que você precisa ler do HTML e por que o GitHub é um alvo raro onde proxies baratos de datacenter e IPv6 são a ferramenta certa.
Conheça os limites antes de enfrentá-los
Comece com a API - ela é estruturada, aprovada e barata em termos de cota se você autenticar. Os números que moldam tudo: solicitações REST não autenticadas são limitadas a 60 por hora, contadas por IP; um token autenticado obtém 5.000 por hora; a API de Pesquisa é ainda mais restrita, com 30 solicitações por minuto autenticadas (10 não autenticadas). O detalhe chave é que o limite não autenticado é contado por IP - o que é precisamente por que rotear leituras através de muitos IPs multiplica sua margem.
import requests
# Authenticated API call - watch the rate-limit headers
headers = {"Authorization": "Bearer YOUR_GH_TOKEN",
"Accept": "application/vnd.github+json"}
r = requests.get("https://api.github.com/repos/psf/requests", headers=headers, timeout=15)
repo = r.json()
print(repo["stargazers_count"], repo["forks_count"], repo["open_issues_count"])
print("remaining this hour:", r.headers["X-RateLimit-Remaining"])
Use a API para tudo que ela expõe claramente, e use git clone para conteúdos de arquivos - clonar e processar um repositório localmente é mais rápido e suave do que extrair páginas de arquivos individuais. Extrair HTML é para os sinais que a API limita em inutilidade ou omite completamente.
O que você precisa ler do HTML
Três conjuntos de dados de alto valor vivem apenas nas páginas renderizadas. O gráfico de dependentes - a contagem "Usado por" do GitHub e a lista de repositórios que dependem de um pacote - é uma das métricas de adoção mais fortes que existem, e não está na API. As páginas de tendências (github.com/trending, filtráveis por linguagem e janela) são apenas HTML. E as páginas de tópicos apresentam repositórios por assunto de forma muito mais útil do que a cota de pesquisa permite. Todos os três são HTML renderizado no servidor, então uma simples solicitação e análise funciona - sem necessidade de navegador.
import requests
from bs4 import BeautifulSoup
# Scrape the trending page through a datacenter proxy
PROXY = "http://USER:PASS@dc.quantumproxies.io:8000"
def trending(language="python", since="daily"):
url = f"https://github.com/trending/{language}?since={since}"
r = requests.get(url, proxies={"https": PROXY}, timeout=20,
headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(r.text, "html.parser")
repos = []
for row in soup.select("article.Box-row"):
name = row.select_one("h2 a")["href"].strip("/")
stars = row.select_one("a[href$='/stargazers']")
repos.append({"repo": name,
"stars": stars.get_text(strip=True) if stars else None})
return repos
print(trending("rust", "weekly")[:5])

O GitHub é um alvo de datacenter (e talvez IPv6)
Aqui está a parte que as pessoas superengenham. As páginas públicas do GitHub são renderizadas no servidor, lenientes e não possuem desafios agressivos de JavaScript - então você não precisa de IPs residenciais premium para lê-las. Este é um caso clássico para proxies de datacenter: baratos, rápidos e abundantes, espalhados amplamente para que nenhum IP único se aproxime do limite não autenticado ou acione um limite de taxa secundário. Optar por residenciais aqui é pagar preços de luxo por um trabalho que um IP econômico faz perfeitamente. Nosso guia sobre quando os proxies de datacenter são a escolha certa descreve exatamente esse tipo de alvo leniente e de alta capacidade.
Há uma opção ainda mais barata que vale a pena testar: IPv6. Quando um alvo responde via IPv6, pools de proxies IPv6 oferecem um espaço de endereços enorme e de baixo custo - ideal para distribuir leituras limitadas por IP através de milhares de saídas. O GitHub tem implementado suporte a IPv6, então é um dos poucos alvos grandes onde isso vale a pena verificar em vez de assumir. Teste antes de se comprometer: execute o alvo através do nosso verificador de compatibilidade IPv6 gratuito e leia a economia em nosso guia completo de proxies IPv6.
Obtenha proxies de datacenter rápidos para o GitHub
Atenção ao limite de taxa secundário
Os limites por hora não são o único limitador que você encontrará. O GitHub também possui detecção de abuso que reage a tráfego explosivo, altamente concorrente ou suspeitamente regular - então, mesmo enquanto você fica confortavelmente abaixo do limite numérico, martelar de um único IP pode resultar em um bloqueio temporário. As defesas são as mesmas que fazem de você um cliente educado: limite a concorrência, adicione um pouco de variação entre as solicitações, respeite qualquer cabeçalho Retry-After que o servidor lhe entregar e distribua a carga para que nenhuma saída única carregue um padrão descontrolado. Esta é a verdadeira razão pela qual um pool amplo importa - não é apenas a aritmética de 60 por hora, é que nenhum IP individual deve parecer um script descontrolado. Recuar no primeiro 403 ou desaceleração em vez de tentar novamente direto em uma proibição mais longa.
Transformando dados de repositórios em inteligência de ferramentas de desenvolvimento
O objetivo de tudo isso é a camada de análise. Acompanhe a velocidade de estrelas de uma biblioteca concorrente e a contagem de dependentes ao longo do tempo e você estará observando a adoção em tempo real. Diferencie as páginas de tendências por linguagem semana a semana para identificar ferramentas em ascensão antes que sejam óbvias. Extraia listas de colaboradores para ler o tamanho da equipe e sinais de contratação. Combine divisões de linguagem em um tópico para mapear todo um ecossistema. Faça capturas de repositórios em um cronograma, armazene cada captura com um carimbo de data/hora, e os deltas se tornam o produto - impulso, não um único número. Uma leitura única de 40.000 estrelas é trivial; o mesmo repositório adicionando 2.000 estrelas por semana enquanto sua contagem de dependentes sobe é um sinal genuíno de adoção que você pode agir antes que o mercado mais amplo perceba.
import requests
from bs4 import BeautifulSoup
# The 'Used by' dependents count - a top adoption signal, HTML-only
def used_by(owner, repo):
url = f"https://github.com/{owner}/{repo}/network/dependents"
proxy = "http://USER:PASS@dc.quantumproxies.io:8000"
r = requests.get(url, proxies={"https": proxy}, timeout=20,
headers={"User-Agent": "Mozilla/5.0"})
soup = BeautifulSoup(r.text, "html.parser")
tab = soup.select_one("a.btn-link.selected")
return tab.get_text(strip=True) if tab else None
print(used_by("pallets", "flask")) # e.g. '1.4m Repositories'
Um hábito mantém os custos razoáveis em volume: solicite apenas o que você precisa. Páginas de repositórios são leves, mas se você se expandir para milhares de repositórios, bloqueie ativos e reutilize conexões - nossas notas sobre redução de custos de largura de banda de proxy se aplicam mesmo a um alvo barato, porque o ganho se compõe.

Perguntas frequentes
Qual é o limite de taxa da API do GitHub?
Solicitações REST não autenticadas são limitadas a 60 por hora, contadas por endereço IP. Um token autenticado eleva isso para 5.000 por hora. A API de Pesquisa é separada e mais restrita - 30 solicitações por minuto autenticadas, 10 não autenticadas. Como o limite não autenticado é por IP, distribuir leituras através de um pool de proxies é uma maneira eficaz de escalar a coleta.
Posso extrair dados do GitHub que a API não expõe?
Sim. O gráfico de dependentes ("Usado por"), as páginas de tendências, listagens de tópicos e cronogramas de estrelas são apenas HTML ou fortemente limitados por cota via API. São páginas renderizadas no servidor, então uma solicitação e análise com BeautifulSoup funciona sem navegador. Roteie através de proxies de datacenter e distribua as leituras para ficar abaixo dos limites de taxa secundários.
Preciso de proxies residenciais para o GitHub?
Geralmente não. As páginas públicas do GitHub são lenientes e renderizadas no servidor sem desafios agressivos de JavaScript, então proxies de datacenter baratos lidam bem com elas - o objetivo é distribuir solicitações através de IPs, não disfarçá-las como residenciais. Se o alvo responder via IPv6, pools de IPv6 são ainda mais baratos. Reserve IPs residenciais para alvos genuinamente hostis.
Devo usar git clone ou extrair páginas de arquivos?
Clone para conteúdos de arquivos. Executar git clone e processar o repositório localmente é mais rápido, mais suave para o GitHub e evita limites de taxa por arquivo completamente. Reserve a extração de HTML e a API para metadados e sinais - estrelas, dependentes, tendências, colaboradores - que você não pode obter dos arquivos verificados.
O GitHub recompensa uma abordagem em camadas: API onde é generosa, git clone para arquivos e extração de HTML para os sinais de adoção que esconde - tudo distribuído por IPs baratos para que nenhum endereço único atinja o limite de 60 por hora. Teste para IPv6, confie em pools de datacenter, e toda a plataforma se torna um conjunto de dados de ecossistema de desenvolvimento ao vivo.
Experimente proxies IPv6 para leituras de alto volume no GitHub