노드를 사용하여 익명 네트워크 캡처를 합니다.js,Tor,인형배우,cheerio
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
인형사와 함께 훑어보다
Puppeteer는 headless browser와 DevTools 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
이 글의 목적은 귀하께 부드러운 소개 페이지를 제공하는 것입니다.시간을 내서 읽어 주셔서 감사합니다.🙏
Reference
이 문제에 관하여(노드를 사용하여 익명 네트워크 캡처를 합니다.js,Tor,인형배우,cheerio), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/georgegkas/anonymous-web-scraping-with-node-js-tor-puppeteer-and-cheerio-bge텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)