用perl发送http请求
工作中经常用到脚本发送http请求,但是用脚本发送和用浏览器发送差别很到,当你用脚本调用一些接口时可能没有权限,此时需要获取到调用接口的权限,一般情况下就是。请求的时候需要带着一个cookie值或者一个token值,浏览器发送时一般都会保存这个值,但是脚本发送不知道保存在那个地方还是不会生成(知道的小伙伴告诉我一声),但是一般的做法是带着用户名和密码去请求,服务器给你回复一个cookie值,然后下一次调用接口的时候就带着这个cookie值去请求;
获取cookie值
```
sub getCookie{my($ip,$port)=@_;my $ua = LWP::UserAgent->new(protocols_allowed => [ 'http', 'https' ],timeout => 30, ssl_opts => { verify_hostname => 0},);$username='admin';$password='admin';#密码有没经过加密处理,如果经过加密处理要写加密后的my $arg={'username' => $username,'password' => $password,};$url="https://$ip:$port/vapi/extjs/access/ticket";#url可以抓包获取,不是登录的那个地址my $resp = $ua->post($url,$arg,'Content_Type' => 'form-data');#用post方法提交参数my $status=$resp->status_line;my $header=$resp->headers_as_string;#解析头部my $content = $resp->content;if ($status=~ /200/){@array=split(/\n/,$header);foreach $rock (@array){if ($rock=~/^Set-Cookie/){@Setcookie=split(/\s+/,$rock);$Setcookie[1]=~s/;$//;my $cookie=$Setcookie[1];$content=$cookie;last;}}} return $content;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
发送get请求
调用上面的getcookie函数,获取cookie值
sub https_Get {my ( $url,$cookie) = @_;my $ua = LWP::UserAgent->new(protocols_allowed => [ 'http', 'https' ],timeout => 30,ssl_opts => { verify_hostname => 0 },);$ua->default_header('cookie' => "$cookie" );my $response = $ua->get($url);return $response->{_content};
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
发送post请求
sub https_Post{my($url,$arg,$cookie) = @_; #arg为需要提交的参数my $ua = LWP::UserAgent->new(protocols_allowed => [ 'http', 'https' ],timeout => 30, ssl_opts => { verify_hostname => 0},);$ua->default_header('cookie' => "$cookie" );$resp = $ua->post($url,$arg,'Content_Type' => 'form-data'); #注意参数的格式是form-data还是其他格式,可用postman(一款模拟发送http请求的插件,只可以在谷歌浏览器中用)调试 $content = $resp->content;return $content;}
用perl发送http请求相关推荐
- ajax发送动态字符传,如何发送ajax请求文件与其他字符串的变量?
我想创建ajax调用并发送数据与文件和其他变量,我也使用django,如果它的帮助.如何发送ajax请求文件与其他字符串的变量? 我尝试: js文件: $("#save-new-reques ...
- jquery发送put请求_浅谈GET,POST,PUT发送请求
一般我们在浏览器的地址栏输入网址回车后,发送的是GET请求 当用表单提交时(最普遍的是用户登录),我们可以指定是GET还是POST请求,这里需要注意的是有的浏览器并不支持PUT请求,那后台restfu ...
- 使用rest_framework写api接口的一些注意事项(axios发送ajax请求)
1. 类继承GenericAPIView,定义queryset 印象深刻的事: 由于原来对于继承关系不太清楚,写接口 APIView/泛指GenericAPIView不太关注queryset 没有设置 ...
- Vue之axios发送Ajax请求
2.10 axios发送ajax请求 axios github 2.10.1 准备工程 创建一个django工程,例如 login.创建完成之后,再创建一个子应用,例如users.最后再设置一下模板文 ...
- 爬虫之requests模块发送post请求
爬虫之requests模块发送post请求 思考:哪些地方我们会用到POST请求? 登录注册( 在web工程师看来POST 比 GET 更安全,url地址中不会暴露用户的账号密码等信息) 需要传输大文 ...
- java post xmll_HttpClient发送Post请求,内容格式为xml,并获取响应内容
ChannelDistributor.xml 内容如下: yisou abcd1234 10010000 00 1).HttpClient发送Post请求,内容格式为xml,并获取响应内容 impor ...
- PHP爬取post网页数据,php curl发送post请求爬取webService接口数据简单实例
header('Content-Type: text/html;charset=utf-8'); /** * 使用curl发送post请求 * @param $url * @param string ...
- python写页面发送post请求_Python模拟浏览器向CSDN发送post请求的方法,POST
目录 1.发送get请求的方法 import requests import json def GET(url): #get请求 req = requests.get(url) #输出状态码 prin ...
- python并发发送http请求_用python异步发送http请求来提升效率
需求 在一个我做的项目里,业务流程有一环需要调用http的接口. 这个接口本身是同步处理的,返回响应的速度会根据要处理的数据量不同而不同. 为了不拖慢主业务流程,客户要求采用异步的方式来请求,即只要得 ...
最新文章
- HDU 1155 Bungee Jumping
- python的工作方向-python职业发展方向有哪些,各有什么优劣?
- 如何编译java,java如何编译运行?
- Python常见十六个错误集合,你知道那些?
- SDUT 2766 小明传奇2
- BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
- DDMS工具使用(转)
- Android SharedPreference最佳实践
- ArcGIS JavaScript在线编辑
- Android的Button监听
- 在WebClient类中保持Session
- 【计算机毕业设计】小型OA系统设计与实现Springboot
- 手把手教你Markdown语法
- 优秀课程案例:使用Scratch绘制初中数学中心对称图形!
- java: 读取D:\repository\org\lz4\lz4-java\1.7.1\lz4-java.jar时出错; error in opening zip file解决方案
- torch.nn.CosineSimilarity() 三维张量
- 驱动器开发:基础概念一览
- 中国移动手机支付须走自主创新之路
- C语言库函数— qsort () 详解
- 浅谈Lattepanda