{"_id":"jerryproxy-ykit","_rev":"447656","name":"jerryproxy-ykit","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","dist-tags":{"latest":"1.1.2"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"time":{"modified":"2021-08-05T06:52:04.000Z","created":"2016-08-03T12:25:26.744Z","1.1.2":"2018-03-22T12:00:32.333Z","1.1.1":"2017-07-11T04:07:00.260Z","1.1.0":"2017-07-04T09:01:13.045Z","1.0.66":"2016-11-16T03:31:09.166Z","1.0.58":"2016-11-07T09:22:23.843Z","1.0.55":"2016-09-12T03:34:32.191Z","1.0.54":"2016-09-09T06:55:22.461Z","1.0.43":"2016-08-03T12:25:26.744Z"},"users":{},"author":{"name":"ymfe","email":"ymfe.team@gmail.com","url":"https://github.com/roscoe054/Jerry"},"versions":{"1.1.2":{"name":"jerryproxy-ykit","version":"1.1.2","private":false,"dependencies":{"babel-polyfill":"^6.16.0","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","socket.io-client":"^2.0.3","underscore":"^1.8.3"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo nodemon bin/jerry"},"author":{"name":"ymfe","email":"ymfe.team@gmail.com","url":"https://github.com/roscoe054/Jerry"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","webpack":"^1.13.1"},"gitHead":"113d2d82cc6dae923016d65c78be929ac3d3cdbd","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.1.2","_shasum":"f12e0e4a88d122948b877b955a8d0c9cb1866722","_from":".","_npmVersion":"3.10.5","_nodeVersion":"5.12.0","_npmUser":{"name":"ymfe","email":"ymfe.team@gmail.com"},"dist":{"shasum":"f12e0e4a88d122948b877b955a8d0c9cb1866722","size":2495726,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.1.2.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.1.2.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jerryproxy-ykit_1.1.2_1521720032123_0.1428971181449572"},"_hasShrinkwrap":false,"publish_time":1521720032333,"_cnpm_publish_time":1521720032333},"1.1.1":{"name":"jerryproxy-ykit","version":"1.1.1","private":false,"dependencies":{"babel-polyfill":"^6.16.0","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","socket.io-client":"^2.0.3","underscore":"^1.8.3"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo nodemon bin/jerry"},"author":{"name":"ymfe","email":"ymfe.team@gmail.com","url":"https://github.com/roscoe054/Jerry"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","webpack":"^1.13.1"},"gitHead":"2c4b7450ef82cb66477e6dbb8ce8aca3758d3ffe","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.1.1","_npmVersion":"5.0.4","_nodeVersion":"6.9.1","_npmUser":{"name":"ymfe","email":"ymfe.team@gmail.com"},"dist":{"shasum":"c923fd27e9ba3acd55d984990e59473cf9166b3f","size":2532397,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.1.1.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.1.1.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jerryproxy-ykit-1.1.1.tgz_1499746019954_0.9481882089748979"},"directories":{},"publish_time":1499746020260,"_cnpm_publish_time":1499746020260,"_hasShrinkwrap":false},"1.1.0":{"name":"jerryproxy-ykit","version":"1.1.0","private":false,"dependencies":{"babel-polyfill":"^6.16.0","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","socket.io-client":"^2.0.3","underscore":"^1.8.3"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo nodemon bin/jerry"},"author":{"name":"ymfe","email":"ymfe.team@gmail.com","url":"https://github.com/roscoe054/Jerry"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","webpack":"^1.13.1"},"gitHead":"aeba414a0288c15e97a7179c8f12af201609d0a2","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.1.0","_npmVersion":"5.0.4","_nodeVersion":"6.9.1","_npmUser":{"name":"ymfe","email":"ymfe.team@gmail.com"},"dist":{"shasum":"0f44ab0bc1d305349e95666dba644ee4892f5005","size":2532394,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.1.0.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.1.0.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/jerryproxy-ykit-1.1.0.tgz_1499158872865_0.2452434110455215"},"directories":{},"publish_time":1499158873045,"_cnpm_publish_time":1499158873045,"_hasShrinkwrap":false},"1.0.66":{"name":"jerryproxy-ykit","version":"1.0.66","private":false,"dependencies":{"babel-polyfill":"^6.16.0","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","underscore":"^1.8.3"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo node bin/jerry"},"author":{"name":"Ellery Shen","email":"jiao.shen@qunar.com","url":"https://github.com/Ellery0924/qproxy_github"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","webpack":"^1.13.1"},"gitHead":"d1520df87c25637bbd4011c9cde5ba36f82b455f","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.0.66","_shasum":"f6e06bfc26fe9f6aa26006963e9b6ffef656be8f","_from":".","_npmVersion":"3.8.8","_nodeVersion":"4.2.4","_npmUser":{"name":"roscoe054","email":"juyuhao805@126.com"},"dist":{"shasum":"f6e06bfc26fe9f6aa26006963e9b6ffef656be8f","size":1059235,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.0.66.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.0.66.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/jerryproxy-ykit-1.0.66.tgz_1479267066804_0.2212351681664586"},"directories":{},"publish_time":1479267069166,"_cnpm_publish_time":1479267069166,"_hasShrinkwrap":false},"1.0.58":{"name":"jerryproxy-ykit","version":"1.0.58","private":false,"dependencies":{"babel-polyfill":"^6.9.1","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","underscore":"^1.8.3"},"scripts":{"start":"sudo node bin/jerry"},"author":{"name":"Ellery Shen","email":"jiao.shen@qunar.com","url":"https://github.com/Ellery0924/qproxy_github"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","webpack":"^1.13.1"},"gitHead":"dabcfb5010d458db25b31a6395de0bd7e1ad5d88","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.0.58","_shasum":"18b2f8d16f6724db36b5d1f9b58baf2120d4b500","_from":".","_npmVersion":"3.8.8","_nodeVersion":"4.2.4","_npmUser":{"name":"roscoe054","email":"juyuhao805@126.com"},"dist":{"shasum":"18b2f8d16f6724db36b5d1f9b58baf2120d4b500","size":1058789,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.0.58.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.0.58.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jerryproxy-ykit-1.0.58.tgz_1478510541281_0.5250613538082689"},"directories":{},"publish_time":1478510543843,"_cnpm_publish_time":1478510543843,"_hasShrinkwrap":false},"1.0.55":{"name":"jerryproxy-ykit","version":"1.0.55","private":false,"dependencies":{"babel-polyfill":"^6.9.1","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","underscore":"^1.8.3"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo node bin/jerry"},"author":{"name":"Ellery Shen","email":"jiao.shen@qunar.com","url":"https://github.com/Ellery0924/qproxy_github"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","webpack":"^1.13.1"},"gitHead":"c648475e9680cab7b7e6519fe985786d89476b0b","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.0.55","_shasum":"fc430b5778165af08b57d74063068f94e984985b","_from":".","_npmVersion":"3.8.8","_nodeVersion":"4.2.4","_npmUser":{"name":"roscoe054","email":"juyuhao805@126.com"},"dist":{"shasum":"fc430b5778165af08b57d74063068f94e984985b","size":1022975,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.0.55.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.0.55.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jerryproxy-ykit-1.0.55.tgz_1473651269092_0.5979160419665277"},"directories":{},"publish_time":1473651272191,"_cnpm_publish_time":1473651272191,"_hasShrinkwrap":false},"1.0.54":{"name":"jerryproxy-ykit","version":"1.0.54","private":false,"dependencies":{"babel-polyfill":"^6.9.1","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.15.0","morgan":"~1.6.1","react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","require-uncached":"^1.0.2","serve-favicon":"~2.3.0","socket.io":"^1.4.6","underscore":"^1.8.3"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo node bin/jerry"},"author":{"name":"Ellery Shen","email":"jiao.shen@qunar.com","url":"https://github.com/Ellery0924/qproxy_github"},"bin":{"jerry":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","webpack":"^1.13.1"},"gitHead":"341d437a071bb0dce4eb4f5ad884fd3898f4ccee","description":"JerryProxy是一个集成了HostManager和Charles功能的代理服务器。","_id":"jerryproxy-ykit@1.0.54","_shasum":"20b7b48a49b5b2c92ebdfffb969a0518c58db873","_from":".","_npmVersion":"3.8.8","_nodeVersion":"4.2.4","_npmUser":{"name":"roscoe054","email":"juyuhao805@126.com"},"dist":{"shasum":"20b7b48a49b5b2c92ebdfffb969a0518c58db873","size":1022948,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.0.54.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.0.54.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/jerryproxy-ykit-1.0.54.tgz_1473404119470_0.8309351906646043"},"directories":{},"publish_time":1473404122461,"_cnpm_publish_time":1473404122461,"_hasShrinkwrap":false},"1.0.43":{"name":"jerryproxy-ykit","version":"1.0.43","private":false,"dependencies":{"babel-polyfill":"^6.9.1","bluebird":"^3.4.0","body-parser":"~1.13.2","colors":"*","cookie-parser":"~1.3.5","debug":"~2.2.0","ejs":"~2.3.3","express":"~4.13.1","history":"^1.17.0","immutable":"^3.8.1","lodash":"^4.14.1","morgan":"~1.6.1","react":"^0.14.5","react-dom":"^0.14.5","react-redux":"^4.0.6","react-router":"^1.0.3","redux":"^3.0.5","redux-thunk":"^1.0.3","serve-favicon":"~2.3.0","socket.io":"^1.4.6"},"scripts":{"prepublish":"sh ./build.sh","start":"sudo node bin/jerry"},"author":{"name":"Ellery Shen","email":"jiao.shen@qunar.com","url":"https://github.com/Ellery0924/qproxy_github"},"bin":{"jerry-ykit":"./bin/jerry.js"},"main":"./jerry.js","devDependencies":{"babel-core":"^6.11.4","babel-loader":"^6.2.4","babel-preset-es2015":"^6.9.0","babel-preset-react":"^6.11.1","babel-preset-stage-0":"^6.5.0","grunt":"^0.4.5","grunt-babel":"^6.0.0","grunt-contrib-clean":"^1.0.0","grunt-contrib-concat":"^1.0.1","grunt-contrib-cssmin":"^1.0.1","grunt-contrib-uglify":"^1.0.1","grunt-contrib-watch":"^0.6.1","load-grunt-tasks":"^3.3.0","webpack":"^1.13.1"},"gitHead":"5065c02862d8cc2091631a845e8ea769bd6c9069","description":"文档还在施工中...","_id":"jerryproxy-ykit@1.0.43","_shasum":"57537c0d2c9681ef0913ae225130bde8d868c462","_from":".","_npmVersion":"3.8.8","_nodeVersion":"4.2.4","_npmUser":{"name":"roscoe054","email":"juyuhao805@126.com"},"dist":{"shasum":"57537c0d2c9681ef0913ae225130bde8d868c462","size":539894,"noattachment":false,"key":"/jerryproxy-ykit/-/jerryproxy-ykit-1.0.43.tgz","tarball":"http://registry.cnpm.dingdandao.com/jerryproxy-ykit/download/jerryproxy-ykit-1.0.43.tgz"},"maintainers":[{"name":"roscoe054","email":"juyuhao805@126.com"},{"name":"ymfe","email":"ymfe.team@gmail.com"}],"_npmOperationalInternal":{"host":"packages-12-west.internal.npmjs.com","tmp":"tmp/jerryproxy-ykit-1.0.43.tgz_1470227126461_0.41959497961215675"},"directories":{},"publish_time":1470227126744,"_cnpm_publish_time":1470227126744,"_hasShrinkwrap":false}},"readme":"# JerryProxy\n## 简介\nJerryProxy是一个集成了HostManager和Charles功能的代理服务器。\n\n它的主要功能:\n- 无DNS缓存的Host分组管理,支持同一条host在不同环境中快速切换\n- 代理服务器\n- URL MAP (可以转发到本地或者远程URL)\n- 请求/响应日志\n- 断点\n- 限速\n\n对于去哪儿网的前端开发来说，以上所有功能都支持HTTP/HTTPS。对于其他使用者，HTTPS下的Host管理功能依然可用，其他功能则不可用。\n\nJerry是使用NodeJS和React/Redux开发的WebApp,因此可以兼容Windows/Linux。\n\nJerry目前已经作为去哪儿前端开发构建工具 [YKit](http://ued.qunar.com/ykit/) 的一部分，关于在 YKit 中的使用，请参考文档 http://ued.qunar.com/ykit/docs-%E4%BB%A3%E7%90%86%E5%B7%A5%E5%85%B7.html\n\n## 安装和配置\n\nnpm安装:\n```\nnpm install -g jerryproxy\n```\nwindows用户请使用管理员模式运行npm命令行,Mac/Linux用户请使用sudo执行。\n\n## 启动\n在控制台执行以下命令：\n```\nsudo jerry\n```\n(windows用户需要以管理员模式运行命令行)\n\njerry配置页面的地址是 http://127.0.0.1:1000/qproxy#/?_k=1kpa78\n\n注意, 由于最新的MacOS使用open命令无视系统配置的默认浏览器而直接用safari打开, jerry在命令行启动时已经不会自动打开浏览器了。\n最好自己收藏一下这个网址。\n\n## 去哪儿开发专用的便捷使用方式\n\nJerry 针对去哪儿的开发人员提供了一些更为便捷的启动方式，可以一键启动代理工具+开发服务器，首先你需要配置你的工作目录路径：\n\n```\nsudo jerry -s /your/workpath\n```\n\n然后可以通过 `sudo jerry -y [ykit args]` 或者 `sudo jerry -f [fekit args]` 来启动代理和 YKit/FEKit 开发服务器，在 -y 参数后面可以写这两个服务的参数，\n例如：\n\n```\nsudo jerry -y -s // 启动代理和ykit https服务\n```\n\n这样配置以后就不再需要每次启动YKit时cd到你的工作路径了。\n\n## 配置系统/浏览器代理\n使用jerry需要配置网络的代理,请将HTTP/HTTPS统一设置为127.0.0.1:999。\n\n做移动端真机调试的时候也需要设置手机代理,host和端口同上。\n\n## 解决端口冲突\nJerryProxy总共占用了四个端口,分别为:\n- 代理服务器:999\n- 网页服务器:1000\n- HTTPS中间人服务器:1001\n- 日志服务器:3000\n\n使用以下命令可以重新设置这四个端口:\n```\nsudo jerry -p [代理服务器] [网页服务器] [中间人服务器] [日志服务器]\n```\n以上四项全为必填,如果某个端口号没有变化请填写当前端口号。\n\n注意:修改代理服务器端口后,你应该重新配置网络代理中的端口号。\n\n## 使用说明\n### 切换到代理服务\n\n最简单的方式是使用`SwitchyOmega`等chrome代理插件，或者使用Proxy右上角推荐的代理插件。以下是`SwitchyOmega`的配置，我们将所有外部请求打到`127.0.0.1:999`，也就是我们的本地代理上。\n\n![屏幕快照 2016-09-08 上午11.43.18](https://github.com/Ellery0924/Jerry/blob/master/public/images/switchhost.png)\n\n注意: 你需要把所有忽略的规则全部清空。另外, ShadowSocks和所有的代理都冲突, 在使用时也需要关闭。\n\n### Host管理\n\n我们建议你彻底放弃编辑Host文件修改Host的方式并清空系统host文件中的所有内容, 直接转移到这套方案。这套方案不仅没有DNS缓存, 项目和环境的切换也十分便捷。\n\n访问http://127.0.0.1:1000/qproxy#/?_k=1kpa78\n左侧导航是项目(方案)列表，右侧面板是该分组下 Host 规则。这里你需要手动选择当前激活的分组。\n\n![Jerry-Host](https://github.com/Ellery0924/Jerry/blob/master/public/images/jerry-host.png)\n点击`添加规则`可以批量导入Host规则, 格式和Host文件完全相同, 除了不支持注释以外:\n\n![Host导入](https://github.com/Ellery0924/Jerry/blob/master/public/images/import-host.png)\n\n在Host导入以后, 配置会立即生效, 无需重启浏览器。点击`导出Host`可以将当前的Host配置转换成Host文件的格式。\n\n另外, Jerry还提供了快速切换环境的功能, 每条Host的右侧有可选择的环境和机器IP, 你可以通过选择它们来快速切换环境。\n\n![切换Env](https://github.com/Ellery0924/Jerry/blob/master/public/images/single-host.png)\n\n我们内置了一些常用的环境如local, 如果选择online等于没有配置host, 选择custom可以手动输入IP。\n\n如果你需要修改默认的环境/机器组配置, 可以在服务器组配置面板中手动编辑, 如图:\n\n![Edit Server Group](https://github.com/Ellery0924/Jerry/blob/master/public/images/host-config.png)\n\n修改完成后, 你需要重新启动代理才能生效。\n\n### Mock服务（去哪儿特供功能）\n\n所有ykit项目都可以开启mock服务, 首先你需要在项目的根路径下添加一个mock.js, 内容如下:\n\n```\nmodule.exports = [\n    {\n        // 当前环境\n        current: 'local',\n        // 匹配规则\n        pattern: /test\\.qunar\\.com\\/([^?]*)(\\?.*)?/,\n        // 所有的responder, 生效的是等于current的那个\n        responders: {\n            \"beta\": 'http://$1.qunar.com',\n            \"dev\": 'http://$1.qunarman.com',\n            \"local\": './mock/$1.json'\n        },\n        // 配置jsonp wrapper函数名\n        jsonpCallback: 'jsCallback',\n        // 响应头的content-type\n        contentType: 'text/html'\n    },\n    {\n        // 简易配置, 匹配规则\n        pattern: /test2\\.qunar\\.com\\/(.*)/,\n        // 可以直接返回一个json，同样也支持上面那种正则匹配的方式\n        responder: {id: 2222},\n        // 同样可以配这个和contentType\n        jsonpCallback: 'jsCallback'\n    },\n    {\n        pattern: /test3\\.qunar\\.com/,\n        responder: {id: '1212dl;akds;l'}\n    },\n    {\n        pattern: /fakeurl/,\n        // 也支持传入函数，它的参数是一个parse过的URL对象\n        // 例如localhost/fakeurl?a=1&b=2 parse的结果是 {\"protocol\":\"http:\",\"slashes\":true,\"auth\":null,\"host\":\"localhost\",\"port\":null,\"hostname\":\"localhost\",\"hash\":null,\"search\":\"?a=1&b=2\",\"query\":\"a=1&b=2\",\"pathname\":\"/fakeurl\",\"path\":\"/fakeurl?a=1&b=2\",\"href\":\"http://localhost/fakeurl?a=1&b=2\"}\n        // 这在API依赖参数时会非常有用，例如某个分页列表的API需要传入当前页码的情况\n        // 第二个参数是请求的body，会以字符串的形式展示，因为不是所有的body都是JSON格式的\n        responder: function (parsedUrl, body) {\n            // 它的返回值将作为请求的response.body\n            return parsedUrl;\n        }\n    }\n];\n```\n\n然后在代理面板中找到你的项目, 然后在右侧开启Mock服务开关即可生效。\n\n![Mock](https://github.com/Ellery0924/Jerry/blob/master/public/images/mock.png)\n\n### 自定义 Url Map\n\n切换到Url Map选项卡，可以设置请求的远程/本地映射，支持正则匹配。\n\n![屏幕快照 2016-09-08 上午11.53.39](https://github.com/Ellery0924/Jerry/blob/master/public/images/url-map.png)\n\n### 查看请求日志/设置断点\n\n切换到请求/响应日志选项卡，可以查看通过代理请求的接口详细信息，在进行移动端调试时十分便捷。\n\n![屏幕快照 2016-09-08 上午11.55.40](https://github.com/Ellery0924/Jerry/blob/master/public/images/log.png)\n\n点击日志详情右上角的设置断点可以中断请求, 设置断点之后的效果:\n\n![Block](https://github.com/Ellery0924/Jerry/blob/master/public/images/block.png)\n\n点击Continue/Abort就可以让响应继续返回或者abort掉, 这在模拟接口超时或失败时很有用, 另外你还可以在Response选项卡中编辑响应的内容, 如下:\n\n![Block Edit Response](https://github.com/Ellery0924/Jerry/blob/master/public/images/abort.png)\n\n修改内容之后, 让响应Continue即可生效。在不需要中断时, 可以在断点配置面板中将断点关闭或者删除。\n\n### HTTPS\n\n如果你在做HTTPS的开发但是仅仅需要使用host功能,HTTPS代理不必开启。这时候代理服务器会接收浏览器的隧道请求,host配置依然可以生效。\n\n需要在HTTPS下使用URL MAP/抓包等功能的时候,需要开启HTTPS代理,但是需要安装根证书JerryProxyCA.cer, 下载地址:\nhttps://github.com/Ellery0924/Jerry/blob/master/JerryProxyCA.cer\n\n你需要手动信任这个证书, 整个流程和12306的证书安装流程一样。\n\n需要注意的是这个根证书只支持三个通配域名: \\*.qunar.com \\*.qunarzz.com和qunarzz.com。也就是说这也是一个去哪儿的特别定制功能。\n\n另外还需要在并在网络配置面板中设置`开启HTTPS代理`, 如下:\n\n![开启https](https://github.com/Ellery0924/Jerry/blob/master/public/images/https.png)\n\n### 网速限流\n\nJerryProxy还提供了常用的网速限流功能, 可以再网络配置中将它打开, 选择No Throttling之后会取消限速。\n\n### 注意事项\n\n- 需要抓取移动设备的请求时，请保证移动设备和电脑在同一个无线网络下，然后修改移动设备的代理配置，让IP指向自己的电脑，端口为`999`\n- 如果是iOS模拟器，那么需要配置的是电脑的系统代理，你需要设置HTTP和HTTPS的代理，IP和端口号同上。换句话说，Jerry也可以用于ReactNative项目的开发。\n\n如有其它问题请联系 `jiao.shen@qunar.com`\n\n[1]: https://github.com/Ellery0924/QProxy","_attachments":{}}