ホームページ ウェブフロントエンド jsチュートリアル Node.jsでプロキシIPを取得するにはどうすればよいですか?

Node.jsでプロキシIPを取得するにはどうすればよいですか?

May 03, 2017 am 10:03 AM
ip node.js

この記事では主に、node.js のプロキシ IP 取得のサンプル コードに関する関連情報を紹介します。必要な友人は参照してください

node.js はプロキシ IP の取得を実装します

メインファイル:index.js

/*
* 支持:node.js v7.9.0
*/
const cheerio=require('cheerio');
const fetch =require('node-fetch');
const Promise=require('bluebird');
let mongoose=require('mongoose');

Promise.promisifyAll(mongoose);
let Schema=mongoose.Schema;
mongoose.connect('mongodb://localhost:27017/ipproxypool');
let IPpool=new Schema({
  ip:{type:String,unique:true}
})
let Ipproxy=mongoose.model('IP',IPpool);

function fetchUrl(url){
  fetch(url,{
    method:'get',
    headers:{
    }
  })
  .then(res=>res.text())
  .then(body=>{
    let $=cheerio.load(body);
    let length=$('#list table tbody').find('tr').length;
    for (let i=0;i<length;i++){
    let ipaddress= $(&#39;#list table tbody&#39;).find(&#39;tr&#39;).eq(i).find(&#39;td&#39;).eq(0).text() ;
    let port = $(&#39;#list table tbody&#39;).find(&#39;tr&#39;).eq(i).find(&#39;td&#39;).eq(1).text();
    console.log(`IP:${ipaddress}:${port}`);
    let ip=`${ipaddress}:${port}`
    let ippool=new Ipproxy({
      ip:ip
    })
    ippool.save();
    }
  })
}

var sleep = function (time) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      resolve(&#39;ok&#39;);
    }, time);
  })
};
const pageNumber=10;
var start = async function(){
  for(let j=1;j<pageNumber;j++){
     console.log(`当前是第${j}次等待..`);
    fetchUrl(`http://www.kuaidaili.com/free/inha/${j}/`);
    await sleep(1500);
  }
}
start();
ログイン後にコピー

パッケージのサポート: package.json

{
 "name": "demo-4-ipproxypool",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "false-l",
 "license": "",
 "devDependencies": {
  "babel-preset-es2015": "^6.24.1",
  "babel-preset-react": "^6.24.1",
  "babel-preset-stage-3": "^6.24.1"
 },
 "dependencies": {
  "babel-core": "^6.24.1",
  "bluebird": "^3.5.0",
  "cheerio": "^0.22.0",
  "koa": "^2.2.0",
  "koa-router": "^7.1.1",
  "mongoose": "^4.9.6",
  "node-fetch": "^1.6.3"
 }
}
ログイン後にコピー

キャプチャされた IP を保存するには、mongodb データベースをローカルにインストールする必要があります。まだ実装されていません。主に好奇心からこれを書いています。

上記のコードは、IP プロキシ Web サイトの IP をキャプチャし、それを mongodb データベースに保存できます。

以下はkoa2 APIインターフェースに基づいたシンプルなサーバー実装です

server

const Promise=require(&#39;bluebird&#39;);
let mongoose=require(&#39;mongoose&#39;);
const koa=require(&#39;koa&#39;);
const app=new koa();
var router = require(&#39;koa-router&#39;)();
Promise.promisifyAll(mongoose);
let Schema=mongoose.Schema;
mongoose.connect(&#39;mongodb://localhost:27017/ipproxypool&#39;);
let IPpool=new Schema({
  ip:{type:String,unique:true}
})
let Ipproxy=mongoose.model(&#39;IP&#39;,IPpool);

app.use(async (ctx, next) => {
 await next();
 var data=await Ipproxy.find({},function(err,ips){
  var ipmap=[];
   ips.forEach(function(ip){
     ipmap[ip._id]=ip;
     //console.log(ip)
   });
 })
 var map=data.map(ip=>ip.ip);
 ctx.response.type = &#39;text/json&#39;;
 ctx.response.body = map;
});
app.listen(3000);
console.log(&#39;server listen:3000&#39;)
ログイン後にコピー

なぜPromiseとasyncが両方あるのかというと、非同期構文にあまり詳しくないのでどうやって書けばいいのかそれ。

使用法:

package.jsonによる

npm install //インストールサポート

nodeindex.js //プロキシIPを取得

nodeserver.js //シンプルなIPインターフェイスを実行

以上がNode.jsでプロキシIPを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Web サイトは、nginx を通じてブラック/ホワイトリスト IP 制限や国および都市の IP アクセス制限をどのように設定しますか? Web サイトは、nginx を通じてブラック/ホワイトリスト IP 制限や国および都市の IP アクセス制限をどのように設定しますか? Jun 01, 2023 pm 05:27 PM

1. ブラック/ホワイト リストの IP 制限付きアクセス設定 nginx ブラック リストとホワイト リストを設定するにはいくつかの方法がありますが、ここでは一般的に使用される 2 つの方法のみを紹介します。 1. 最初の方法:allow、denydeny、およびallow命令はngx_http_access_moduleに属しており、nginxはデフォルトでこのモジュールをロードするため、直接使用できます。この方法は最も単純で直接的です。この設定はファイアウォールの iptable に似ています。使用方法: 構成ファイルに直接追加します: #Whitelist 設定の後に、アクセス可能な許可 IPlocation/{allow123.13.123.12;allow23.53.32.1/100;denyall;}#ブラックリスト設定、

IP と MAC のバインドは何を意味しますか? IP と MAC のバインドは何を意味しますか? Mar 09, 2023 pm 04:44 PM

IP および MAC バインディングとは、特定の IP アドレスを特定の MAC アドレスに関連付けることを指し、その結果、MAC アドレスを使用するデバイスのみがネットワーク通信に IP アドレスを使用できるようになります。 ip と mac をバインドすると、バインドされたホストの IP アドレスがスプーフィングされるのを防ぐことができます。前提条件: 1. MAC アドレスは一意であり、スプーフィングできません。ルータに直接接続されているネットワーク上のホストにのみバインドできます (つまり、ホストのゲートウェイはルーター上にあります)。

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

Node V8 エンジンのメモリと GC の詳細な図による説明 Node V8 エンジンのメモリと GC の詳細な図による説明 Mar 29, 2023 pm 06:02 PM

この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

WeChatでIPアドレスを確認する方法 WeChatでIPアドレスを確認する方法 May 31, 2023 am 09:16 AM

WeChat で IP アドレスを確認する方法: 1. パソコン版 WeChat にログインし、画面下のタスクバーを右クリックし、「タスク マネージャー」をクリックします。 2. タスク マネージャーが表示されたら、「」をクリックします。左下隅の「詳細」をクリックします; 3. タスク管理 ブラウザの「パフォーマンス」オプションを入力し、「リソース モニターを開く」をクリックします; 4. 「ネットワーク」を選択し、WeChat プロセス「Wechat.exe」を確認します; 5. 「」をクリックします。以下の「TCP 接続」を使用して、WeChat ネットワークの IP 関連の状況を監視します。メッセージを送信して返信を受け取ると、相手の IP アドレスがわかります。

nginxでディレクトリホワイトリストとIPホワイトリストを設定する方法 nginxでディレクトリホワイトリストとIPホワイトリストを設定する方法 May 18, 2023 pm 03:52 PM

1. ディレクトリのホワイトリストを設定します: 指定されたリクエスト パスに制限はありません。API ディレクトリへのリクエスト パスに制限がない場合は、server{location/app{proxy_passhttp://192.168.1.111: 8095/app ;limit_connconn20;limit_rate500k;limit_reqzone=fooburst=5nolay;}location/app/api{proxy_passhttp://192.168.1.111:8095/app/api}}#nginx は正確なマッチングを優先するため

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

nginxリバースプロキシに基づいてユーザーの実際のIPアドレスを取得する方法 nginxリバースプロキシに基づいてユーザーの実際のIPアドレスを取得する方法 May 13, 2023 pm 05:07 PM

はじめに nginx がリバース プロキシとして使用される場合、デフォルト設定バックエンドによって取得される IP アドレスは nginx から取得されます。ユーザーの実際の IP ではなく、request.getRemoteAddr(); を使用して nginx の IP アドレスを取得します。1. Nginx 設定を変更します。サーバー{listen80;server_namejenkins.local.com;location/{proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_passhttp://192.168.10。

See all articles