|
@@ -35,6 +35,13 @@ exports.fetch = (host, route, regexp, codeLen) =>
|
|
|
const bufferHelper = new BufferHelper()
|
|
|
const statusCode = res.statusCode
|
|
|
|
|
|
+ // 302 Move Temporarily
|
|
|
+ // 这种情况一般重试就可以了,所以视为超时统一重试处理
|
|
|
+ if (statusCode === 302) {
|
|
|
+ res.resume()
|
|
|
+ return reject(new Error('timeout'))
|
|
|
+ }
|
|
|
+
|
|
|
if (statusCode !== 200) {
|
|
|
res.resume()
|
|
|
return reject(new Error('Request Failed. Status Code: ' + statusCode))
|
|
@@ -49,7 +56,11 @@ exports.fetch = (host, route, regexp, codeLen) =>
|
|
|
let current
|
|
|
while ((current = regexp.exec(rawData)) !== null) result[current[1].substr(0, codeLen)] = current[2].trim()
|
|
|
if (Object.keys(result).length === 0) {
|
|
|
- return reject(new Error('Request Failed. rawData: '), rawData)
|
|
|
+ const raw = iconv.decode(bufferHelper.toBuffer(), 'UTF-8')
|
|
|
+ if (raw.includes('请开启JavaScript并刷新该页')) {
|
|
|
+ console.log('\n温馨提示:请求过于频繁已被目标网站限制,当前抓取进度已保存,请五分钟后再试...\n')
|
|
|
+ process.exit(0)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return resolve(result)
|