diff --git a/docs/README.md b/docs/README.md index 68083e2b1c0dee223d2009f47747fb6013253f34..262cd21fa531f76504b412ccf948d3d879890452 100644 --- a/docs/README.md +++ b/docs/README.md @@ -227,6 +227,8 @@ $ sudo docker run -d -p 3000:3000 netease-music-api **接口地址 :** `/login/cellphone` +**可选参数 :** `countrycode`: 国家码,用于国外手机号登陆,例如美国传入:`1` + **调用例子 :** `/login/cellphone?phone=xxx&password=yyy` #### 2. 邮箱登录 diff --git a/module/login_cellphone.js b/module/login_cellphone.js index a3f4525c490dc49a0d9e4529cc7f028180fee425..9e5c9c43b6e21026614f70cf80d2c4b8c8c28c39 100644 --- a/module/login_cellphone.js +++ b/module/login_cellphone.js @@ -5,6 +5,7 @@ const crypto = require('crypto') module.exports = (query, request) => { const data = { phone: query.phone, + countrycode: query.countrycode, password: crypto.createHash('md5').update(query.password).digest('hex'), rememberLogin: 'true' } @@ -12,4 +13,4 @@ module.exports = (query, request) => { 'POST', `https://music.163.com/weapi/login/cellphone`, data, {crypto: 'weapi', ua: 'pc', cookie: query.cookie, proxy: query.proxy} ) -} \ No newline at end of file +} diff --git a/package.json b/package.json index 2db559e0187c9252dad39be1ae5e6b41f4517cf2..73e75de172c79c4156a69c9cfd8fb7bdd7a1091f 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "dependencies": { "apicache": "^1.2.1", "express": "^4.16.3", + "pac-proxy-agent": "^3.0.0", "request": "^2.85.0" }, "devDependencies": { diff --git a/util/request.js b/util/request.js index 361031dcfc21f72a905de2cd29ae618ce0c453d9..ff8ff91a04b5105db043290552c1ef2a3d3ec21d 100644 --- a/util/request.js +++ b/util/request.js @@ -1,6 +1,7 @@ const encrypt = require('./crypto') const request = require('request') const queryString = require('querystring') +const PacProxyAgent = require('pac-proxy-agent') // request.debug = true // 开启可看到更详细信息 @@ -67,14 +68,21 @@ const createRequest = (method, url, data, options) => { } const answer = { status: 500, body: {}, cookie: [] } + const settings = { + method: method, + url: url, + headers: headers, + body: queryString.stringify(data) + } + + if (/\.pac$/i.test(options.proxy)) { + settings.agent = new PacProxyAgent(options.proxy) + } else { + settings.proxy = options.proxy + } + request( - { - method: method, - url: url, - headers: headers, - body: queryString.stringify(data), - proxy: options.proxy - }, + settings, (err, res, body) => { if (err) { answer.status = 502