Skip to content

node中request模块配置项 #13

Open
@raclen

Description

@raclen
var options = {
    url: '',
    encoding: "utf-8",
    headers: {
        "Connection": "keep-alive",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
       // 'Cookie':'userid=123456; mycookie2=abcdefg',
        "Accept-Encoding": "gzip, deflate, sdch",
        "Accept-Language": "zh-CN,zh;q=0.8",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2603.0 Safari/537.36"
    },
    json: true
};

设置method
options.method= 'GET'
设置referer
options.headers.Referer=referer;
request默认是不支持cookies,需要开启
var j = request.jar();options.jar=j
这是操作cookies的一个例子

//格式化cookies
function formatCookies(c) {
    var cookies = {};
    var pairs = c.split(/[;,] */);
    for (var i = 0; i < pairs.length; i++) {
        var idx = pairs[i].indexOf('=');
        var key = pairs[i].substr(0, idx);
        var val = pairs[i].substr(++idx, pairs[i].length).trim();
        cookies[key] = val;
    }
    return cookies;
}

app.get('/ptqrshow', function (req, res, next) {
    var j = request.jar();
    var url = "";
    var referer = "";
    options.url=url,options.jar=j,options.method= 'GET',options.headers.Referer=referer;
    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            var cookie_string = j.getCookieString(url);
            //console.log(cookie_string);
            var item = {
                cookies: cookie_string,
                url: 'image/doodle.png'
            };
            res.send(item)
        }
    }).pipe(fs.createWriteStream('./public/image/doodle.png'));;
});

如果需要传参数,可以使用form,例如

options.form={r:{"ptwebqq":cookies.ptwebqq,"clientid":53999199,"psessionid":"","status":"online"}};

设置代理(这样可以使用fiddler抓取请求了)
proxy: "http://127.0.0.1:8888", //for fiddler
抓取被墙的网站:

request({url:"https://www.facebook.com/",proxy:"http://127.0.0.1:1084"}, function (error, response, body) {
    console.log("proxy="+response.statusCode)
    if (!error && response.statusCode == 200) {
        console.log(body);
    }
});//1084 is ss proxy

request文档地址

Metadata

Metadata

Assignees

No one assigned

    Labels

    博客搬迁以前博客的文章迁移过来

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions