노드를 사용하여 익명 네트워크 캡처를 합니다.js,Tor,인형배우,cheerio

8563 단어 nodejavascripttor
웹 캡처는 웹 사이트에서 데이터를 추출하는 기술이다.이 용어는 통상적으로 자동 데이터 추출에 쓰인다.오늘 익명으로 사이트를 잡는 법을 보여드리겠습니다.신분을 숨기고 싶은 이유는 많은 인터넷 서버들이 일정 수량의 연속 요청 후 IP를 금지하는 사이트에 규칙을 적용하기 때문이다.우리는 Puppeteer를 사용하여 웹 페이지를 방문하고 cheerio HTML 해석을 진행하며 Tor 서로 다른 IP 주소에서 모든 요청을 실행할 것입니다.

While the legal aspects of Web Scraping vary, with many grey zones,
remember to always respect the Terms of Service of each web page you
scrape. has wrote a nice article about those legal issues.


Tor 설정


먼저 다음 명령을 사용하여 Tor 클라이언트를 설치해야 합니다.
sudo apt-get install tor

Tor 구성


그런 다음 Tor 클라이언트를 구성합니다.기본 Tor 구성은 하나의 SOCKS 포트를 사용하여 단일 출구 노드에 대한 회로(즉 IP 주소)를 제공합니다.이것은 일상적인 사용에 매우 편리하다. 예를 들어 조회를 하지만 우리의 특정한 장면에 대해 우리는 여러 개의 IP 주소가 필요하다. 이렇게 하면 우리는 캡처할 때 그것들 사이를 전환할 수 있다.
이를 위해 우리는 다른 포트를 열어 SOCKS 연결을 감청하기만 하면 된다.이것은 SocksPort 아래의 주 설정 파일에 여러 개의 /etc/tor 옵션을 추가하는 것을 통해 이루어진 것이다.
기본 편집기를 사용하여 /etc/tor/torrc 파일을 열고 파일 끝에 다음 줄을 추가합니다.

여기서 주의해야 할 몇 가지가 있습니다:


  • SocksPort의 값은 하나의 숫자로 Tor는 SOCKS 프로그램(예를 들어 브라우저)으로부터의 연결을 감청할 것이다.
  • 값은 열려는 포트이기 때문에 다른 프로세스에서 사용할 수 없습니다.
  • 초기 포트는 값SocksPort으로 시작합니다.Tor 클라이언트의 기본 SOCKS입니다.

  • 우리는 값을 돌았다 9050.Tor 이 포트를 사용하면 이 포트에 연결된 외부 응용 프로그램에서 Tor 프로세스를 제어할 수 있습니다.
  • 간단한 약속으로 더 많은 포트를 열기 위해 9051 이후의 값을 하나씩 늘립니다.

tor 클라이언트를 다시 시작하여 새 변경 사항을 적용합니다


sudo /etc/init.d/tor restart

새 노드 항목 만들기


당신의 프로젝트에 새 디렉터리를 만듭니다. 저는 9051


mkdir superWebScraping

탐색 superWebScraping 및 빈 노드 항목 초기화


cd superWebScraping && npm init -y

설치에 필요한 의존항


npm i --save puppeteer cheerio

인형사와 함께 훑어보다


Puppeteerheadless browserDevTools Protocol 또는 Chrome로 통신하는 Chromium이다.요청 라이브러리, 예를 들어 tor-request를 사용하지 않는 이유는 요청 라이브러리가 동적 불러오는 내용을 처리할 수 없는 SPA 사이트


superWebScraping 파일을 만들고 다음 스크립트를 추가합니다.이 진술들은 내연 기록의 것이다






를 사용하여 스크립트 실행


node index.js

Chromium 브라우저 내비게이션https://api.ipify.org을 보실 수 있습니다. 아래 화면 캡처와 같이



내 예시에서 특정한 웹 페이지를 선택한 데는 이유가 있다.https://api.ipify.org 공용 IP 주소를 전송할 수 있습니다.Tor 없이 웹을 탐색하는 IP입니다


index.js문장에 다음 키를 추가하여 상기 코드를 변경합니다:





브라우저에 puppeteer.launch 매개 변수를 제공합니다.이 파라미터의 값은 브라우저가 포트 --proxy-server 위의 로컬 컴퓨터에서 socks5 프록시를 사용하는 것을 알려 줍니다.포트 값은 9050 파일에서 이전에 제공된 값 중 하나입니다


스크립트를 다시 실행합니다


node index.js

이번에는 다른 IP 주소를 보셔야 합니다.Tor 회로와 함께 제공되는 IP입니다



내 것은torrc이지만, 너는 아마도 다른 것이 있을 것이다.동일한 포트144.217.7.33에서 스크립트를 다시 실행하면 이전과 동일한 IP 주소가 제공됩니다



Tor 구성에서 여러 포트를 여는 이유입니다.9050와 같은 다른 포트를 사용해 보십시오.IP가 다릅니다


Scrape content with Cheerio


이제 페이지를 가져올 수 있는 좋은 방법이 생겼습니다. 스크랩할 때가 되었습니다.우리는 cheerio 도서관을 사용할 것이다.Cheerio는 jQuery와 동일한 API를 사용하도록 설계된 HTML 파서입니다.우리의 임무는 Hacker News의 마지막 5개의 댓글 제목을 삭제하는 것이다


탐색하기Hacker News



우리는 앞의 다섯 개의 제목("HAKMEM(1972),"Larry Roberts는 이미 죽었다"등)을 삭제하고 싶습니다. 브라우저의 DevTools를 사용하여 한 문장의 제목을 보면 모든 문장을 HTML 링크 요소로 포장할 수 있습니다. 이 요소는 9051



우리가 따를 프로그램은 다음 목록으로 나타낼 수 있습니다:


  • Tor proxy
  • 를 사용하여 브라우저 인스턴스를 헤드 없이 시작합니다.
  • 새 페이지 만들기
  • 탐색 대상https://news.ycombinator.com/
  • 페이지 HTML 내용 가져오기
  • Cheerio
  • 에 HTML 내용 로드
  • 글 제목을 저장할 그룹을 만듭니다.
  • 액세스 storylink 클래스
  • 의 모든 요소
  • Cherrioslice() 방법을 사용하여 처음 5개의 요소만 가져옵니다.
  • Cherrioeach() 방법으로 이 다섯 요소를 교체한다.
  • 각 문장의 제목을 수조에 추가한다.




위 코드의 출력입니다



Continuous scraping with different IP


마지막으로 고려해야 할 것은 TORC 파일에 정의된 모든 SOCKS 포트를 이용하는 것입니다.이것은 매우 쉽다.우리는 항목마다 다른 포트 번호를 가진 그룹을 정의할 것이다.그리고 우리는 storylink의 이름을 main()로 바꾸고 새로운 scrape() 함수를 정의하여 매번 다른 포트를 사용하여 호출할 것이다main()


이것은 완전한 코드입니다





Conclusion


이 글의 목적은 귀하께 부드러운 소개 페이지를 제공하는 것입니다.시간을 내서 읽어 주셔서 감사합니다.🙏

좋은 웹페이지 즐겨찾기