您的位置:首页 > 编程语言 > Python开发

curl perl python 模拟post请求

2017-10-18 13:49 381 查看
[elk@node01 ~]$ curl -d "username=99999@zjtlcb.com&password=1234567" http://192.168.137.1:8000/api2/auth-token/ {"token": "0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7"}[elk@node01 ~]$

-d/--data <data>

(HTTP)发送指定的数据以一个POST请求到HTTP server,和用户填写衣蛾HTML表单和按下submit按钮一样

这个会导致curl 传递数据到server使用content-type application/x-www-form-urlencoded.

perl 版:

[elk@node01 ~]$ cat a2.pl
use  LWP::UserAgent;
use LWP;
use Encode;
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Headers;
use HTTP::Response;
use Encode;
use URI::Escape;
use URI::URL;
use JSON;
my $ua = LWP::UserAgent->new;
$ua->agent("Mozilla/5.0 (Windows NT 6.1; rv:30.0) Gecko/20100101 Firefox/30.0");
my $cookie_jar = HTTP::Cookies->new(
file=>'lwp_cookies.txt',
autosave=>1,
ignore_discard=>1);
$ua->cookie_jar($cookie_jar);
my $token_url= ' http://192.168.137.1:8000/api2/auth-token/'; 
my $res = $ua->post($token_url,
{
'username'=>'99999@zjtlcb.com',
'password'=>'1234567'
});
print $res->content();
print "\n";
my $r= $res->content();
my $r=encode_utf8($r);
my $hash = decode_json($r);
print $hash->{"token"};
[elk@node01 ~]$ perl a2.pl
{"token": "0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7"}
0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7[elk@node01 ~]$

python 版:
def gettoken():
data = {'username': '99999@zjtlcb.com', 'password': '1234567'}
post_data = urllib.urlencode(data)  # 将post消息化成可以让服务器编码的方式
cj = cookielib.CookieJar()  # 获取cookiejar实例
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
# 自己设置User-Agent(可用于伪造获取,防止某些网站防ip注入)
headers = {}
website = "http://127.0.0.1:8000/api2/auth-token/"
req = urllib2.Request(website, post_data, headers)
content = opener.open(req)
s = content.read()  # linux下没有gbk编码,只有utf-8编码
print s
print type(s)
gettoken()

C:\Python27\python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/Django/a4.py
{"token": "0ac9e8585ef6ae51eb62c785d10a6c5102de3ff7"}
<type 'str'>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: