메인 콘텐츠로 건너뛰기
크롤러와 반크롤러 간의 싸움이 점점 치열해짐에 따라, 각 대형 웹사이트와 앱의 리스크 관리 감지가 점점 강해지고 있으며, 그 중 하나가 IP 차단입니다. IP 차단의 문제를 해결하기 위한 효과적인 방법 중 하나는 프록시를 설정하는 것입니다. 프록시를 설정한 후, 크롤러는 프록시의 IP를 이용해 자신의 실제 IP 주소를 위장하여 반크롤러의 제한을 우회할 수 있습니다. 하지만 프록시의 품질은 높고 낮음이 있으며, 예를 들어 시중의 무료 프록시는 거의 대부분 사용 불가능하거나 차단된 상태입니다. 또한 일부 유료 일반 프록시도 차례로 각 대형 웹사이트와 앱의 리스크 관리 블랙리스트에 추가되고 있습니다. 따라서 현재 고품질 데이터 크롤링에 사용할 수 있는 프록시는 점점 줄어들고 있으며, 현재 시중에서 품질이 높은 프록시는 주로 전용 프록시, ADSL 프록시, 이동 셀룰러 프록시의 몇 가지 유형이 있습니다. 본 프록시 서비스는 이동 셀룰러 네트워크(4G, 5G)를 기반으로 한 회전 프록시 서비스이며, 본 문서에서는 이 서비스의 신청 및 사용 방법을 소개합니다.

이동 셀룰러 프록시

이동 셀룰러 프록시는 사실상 휴대폰 데이터에 기반한 프록시 서비스로, 모든 프록시 IP는 휴대폰의 실제 IP입니다. 이러한 프록시는 크롤러 분야에서 상대적으로 적게 사용되므로 차단될 확률이 더 낮아, 이러한 프록시는 리스크 관리가 매우 강한 웹사이트와 앱을 크롤링하는 데 매우 좋은 효과를 보입니다. 본 프록시 서비스는 대규모의 그룹 제어 모바일 풀을 기반으로 구축된 프록시 서비스로, 모든 트래픽은 순수한 휴대폰 데이터로 전달되며, 시중의 거의 모든 웹사이트와 앱의 데이터 요청을 지원합니다. 프록시 품질이 매우 높아 리스크 관리 확률을 크게 줄일 수 있습니다.

신청 방법

이동 셀룰러 프록시 서비스를 사용하려면 먼저 「신청 페이지」에서 신청할 수 있으며, 최초 신청 시 1 포인트의 무료 한도가 제공됩니다. 로그인하지 않은 경우 자동으로 로그인 페이지로 리디렉션되며, 로그인 후 계속 신청할 수 있습니다.

사용 방법

신청이 완료된 후, 「콘솔」에서 본인의 신청 결과를 확인할 수 있습니다. 아래와 같이 표시됩니다: 「Credentials」를 클릭하면 이동 셀룰러 프록시 서비스의 사용자 이름과 비밀번호를 확인할 수 있으며, 콜론으로 구분되어 있습니다. 사용자 이름은 8자리, 비밀번호는 32자리입니다. 아래와 같이 표시됩니다: 본 이동 셀룰러 프록시는 회전 프록시이므로 사용할 때는 고정된 프록시 주소와 포트만 설정하면 됩니다. 프록시의 주소와 포트는 각각 cellular.proxy.acedata.cloud와 30000이며, 본 프록시는 HTTP/HTTPS/SOCKS 프로토콜의 프록시로, HTTP 및 HTTPS 프로토콜 웹사이트 요청에 사용할 수 있습니다.

명령 테스트

프록시의 사용자 이름과 비밀번호를 얻은 후, 가장 편리한 방법은 curl 명령줄을 통해 테스트하는 것입니다. 설치하지 않은 경우 https://curl.se/를 참조하여 설치하면 됩니다. 현재 프록시의 사용자 이름과 비밀번호가 1f78266a:eff0896726224fa2a99fe82dd1f07562라고 가정하면, 다음과 같은 curl 명령으로 테스트할 수 있습니다:
curl -x 1f78266a:eff0896726224fa2a99fe82dd1f07562@cellular.proxy.acedata.cloud:30000 https://ipinfo.io
여기서 curl의 -x 매개변수를 사용하여 프록시 주소를 지정했으며, 프록시 프로토콜은 기본적으로 HTTP/HTTPS입니다. 여기서 요청하는 URL은 https://ipinfo.io이며, 이 사이트는 요청한 사이트의 실제 IP 주소와 IP가 위치한 지역을 반환할 수 있습니다.
주의: 위의 사용자 이름과 비밀번호는 유효하지 않을 수 있으니, 본인의 사용자 이름과 비밀번호로 교체하시기 바랍니다.
실행 결과는 다음과 같습니다:
{
  "ip": "39.144.10.182",
  "city": "Shanghai",
  "region": "Shanghai",
  "country": "CN",
  "loc": "31.2222,121.4581",
  "org": "AS9808 China Mobile Communications Group Co., Ltd.",
  "postal": "200000",
  "timezone": "Asia/Shanghai",
  "readme": "https://ipinfo.io/missingauth"
}
반환된 결과에서 country는 CN으로, 중국을 나타내며, org는 China Mobile로, 중국 이동 네트워크를 나타내어 실제로 셀룰러 프록시 출구임을 확인할 수 있습니다. 다시 실행하면 다른 결과를 얻을 수 있으며, 매번 요청 시 무작위 IP 출구가 생성됩니다.

코드 연결

아래는 Python을 예로 들어 이동 셀룰러 회전 프록시 설정 방법을 보여줍니다:
import requests

proxy = 'http://{proxy_username}:{proxy_password}@cellular.proxy.acedata.cloud:30000'

proxies = {
    'http': proxy,
    'https': proxy
}

for _ in range(3):
    resp = requests.get('https://ipinfo.io', proxies=proxies)
    print(resp.text)

여기서 우리는 먼저 프록시의 URL을 선언하고 proxy 변수로 정의했습니다. 프로토콜은 http 프로토콜이며, 뒤에 회전 프록시의 사용자 이름과 비밀번호(즉, 콘솔에 표시된 사용자 이름과 비밀번호, 두 개는 콜론으로 구분됨)를 따르고, 그 뒤에 @ 기호를 추가한 후 프록시의 주소와 포트를 추가하면 됩니다. 그 다음 proxies 변수를 선언하고 두 개의 키-값 쌍을 구성했습니다. 키 이름은 각각 http와 https이며, 그 값은 모두 proxy로, HTTP 및 HTTPS 프로토콜 웹사이트에 대해 proxy 변수로 정의된 프록시를 사용하여 요청을 수행합니다. 마지막으로 세 번의 루프를 정의하여 프록시 테스트를 수행하며, 요청하는 URL은 https://ipinfo.io입니다. 이 사이트는 요청한 사이트의 실제 IP 주소와 IP가 위치한 지역을 반환할 수 있습니다. 실행 결과는 다음과 같습니다:
{
  "ip": "39.144.18.26",
  "city": "상하이",
  "region": "상하이",
  "country": "CN",
  "loc": "31.2222,121.4581",
  "org": "AS9808 차이나 모바일 커뮤니케이션 그룹 주식회사",
  "postal": "200000",
  "timezone": "아시아/상하이",
  "readme": "https://ipinfo.io/missingauth"
}
{
  "ip": "39.144.18.26",
  "city": "상하이",
  "region": "상하이",
  "country": "CN",
  "loc": "31.2222,121.4581",
  "org": "AS9808 차이나 모바일 커뮤니케이션 그룹 주식회사",
  "postal": "200000",
  "timezone": "아시아/상하이",
  "readme": "https://ipinfo.io/missingauth"
}
{
  "ip": "39.144.182.55",
  "city": "잔장",
  "region": "광둥",
  "country": "CN",
  "loc": "21.2339,110.3875",
  "org": "AS24445 허난 모바일 커뮤니케이션 주식회사",
  "postal": "524000",
  "timezone": "아시아/상하이",
  "readme": "https://ipinfo.io/missingauth"
}
볼 수 있듯이, 매번 실행할 때마다 얻는 프록시 IP는 무작위이며, IP가 위치한 지역은 실제 모바일 트래픽에서 유래한 것입니다. 물론, 위의 프록시 설정 방식은 실제로는 상대적으로 간단한 설정 방식입니다. 실제로 위의 코드는 요청할 때 추가적인 헤더인 - Proxy Authorization을 설정한 것과 동일하므로, 위의 코드는 다음과 같이 변경할 수 있습니다:
import requests
import base64

proxy_host = 'cellular.proxy.acedata.cloud'
proxy_port = '30000'
proxy_username = '{proxy_username}' # 8자리 사용자 이름
proxy_password = '{proxy_password}' # 32자리 비밀번호

credentials = base64.b64encode(
    f'{proxy_username}:{proxy_password}'.encode()).decode()

proxies = {
    'http': f'http://{proxy_host}:{proxy_port}',
    'https': f'http://{proxy_host}:{proxy_port}'
}

headers = {
    'Proxy-Authorization': f'Basic {credentials}'
}

for _ in range(3):
    resp = requests.get('https://ipinfo.io',
                        proxies=proxies, headers=headers)
    print(resp.text)

볼 수 있듯이, 여기서 우리는 Proxy-Authorization이라는 요청 헤더를 통해 프록시의 사용자 이름과 비밀번호를 추가로 설정했습니다(베이스64 인코딩 필요). 이러한 코드 실행 효과도 동일합니다. 다른 언어, 예를 들어 JavaScript의 axios에서도 유사한 설정 방식을 사용할 수 있습니다:
const axios = require("axios");
const base64 = require("base64");

const proxy_host = "cellular.proxy.acedata.cloud";
const proxy_port = "30000";
const proxy_username = "{proxy_username}"; // 8자리 사용자 이름
const proxy_password = "{proxy_password}"; // 32자리 비밀번호

const credentials = base64.encode(`${proxy_username}:${proxy_password}`);

const proxies = {
  http: `http://${proxy_host}:${proxy_port}`,
  https: `http://${proxy_host}:${proxy_port}`,
};

const headers = {
  "Proxy-Authorization": `Basic ${credentials}`,
};

for (let i = 0; i < 3; i++) {
  axios
    .get("https://ipinfo.io", { proxies, headers })
    .then((resp) => console.log(resp.data))
    .catch((err) => console.error(err));
}
실행 효과는 모두 동일합니다. 다른 언어의 설정 방법에 대해서는 위의 내용을 참고하여 스스로 수정하시기 바랍니다.

더 구매하기

귀하의 요금제가 이미 소진된 경우, 계속해서 해당 프록시 서비스를 사용하려면 더 구매해야 합니다. 더 구매하려면 「신청 페이지」로 가서 「더 구매하기」 버튼을 클릭하여 선택하시면 됩니다. 단일 구매 시 단가가 더 저렴합니다.