c语言 get post请求,利用 socket 发送 get/post 请求

本文介绍了一种使用PHP通过fsockopen函数发送HTTP GET和POST请求的方法,详细阐述了如何构建请求行、头信息和主体信息,并展示了如何处理响应。通过这种方法,可以实现小偷程序(GET请求)和批量发帖(POST请求)。同时提到,如果需要登录,只需在头信息中添加cookie。最后,提到了HTTP请求在不同编程语言中的实现,如C++和Python。
摘要由CSDN通过智能技术生成

思路:利用 fsockopen 函数与要请求的主机建立一个通信通道,再将请求行、头信息、主体信息通过这个通道传输给主机实现请求的发送。利用这种方式发送 get 请求就是常说的小偷程序,发送 post 请求则可以在论坛、博客发帖。

代码:

/*利用HTTP协议socket发送get请求(小偷程序)、post请求(批量发帖程序)

* 知识点:fsockopen、parse_url

*/

//请求类的接口

header('content-type:text/html;charset=utf-8');

interface Proto{

function request($url);

function get();//

function post($str);

function close();//关闭连接

}

class Http implements Proto{

protected $url = array();

protected $header = null;

protected $method = null;

protected $port = null;

protected $response = null;

protected $errno = -1;

protected $errstr = null;

protected $str = null;

public function _construct($url){

}

public function setheader(){

$this->header = $this->method.' '.$this->url['path'].' HTTP/1.1';//记录请求行

$this->header .= "\r\nHost: ".$this->url['host'];//记录头信息

$this->header .= "\r\nReferer: ".$this->url['host'];//伪造referer信息

if($this->method=='GET'){

$this->header .= "\r\n\r\n";

}

if($this->method=='POST'){//记录主体信息

$this->header .="\r\nContent-type: application/x-www-form-urlencoded";

$this->header .="\r\nContent-length: ".strlen($this->str);

$this->header .="\r\n\r\n" . $this->str;

}

}

public function request($url){

$this->url = parse_url($url);

if(!isset($this->url['port'])){

$this->url['port'] = 80;

}

//打开连接主机的通道

$this->fh = fsockopen($this->url['host'],$this->url['port'],$this->errno,$this->errstr,3);

$this->setheader();

fwrite($this->fh,$this->header);//将请求行、头信息、主体信息通过通道传给主机

while(!feof($this->fh)){

$this->response .= fread($this->fh,10240);

}

$this->close();

return $this->response;

}

function get(){

$this->method = "GET";

}

function post($str){

$this->method = "POST";

$this->str = $str;

}

function close(){

fclose($this->fh);

}

}

/*发送get请求

$url='http://mobile.163.com/16/0518/07/BNB519NG0011179O.html#index_digi_1';

$ht = new Http();

$ht->get();

echo $ht->request($url);

*/

/*发送post请求*/

$url='http://localhost:81/web/message/index.php';

$str='user=老李&title=测试HTTP&content=这是个测试&submit=提 交';

$ht = new Http();

$ht->post($str);

echo $ht->request($url);

/*盗链图片

$url='http://........png';

$ht = new Http();

$ht->get();

$p = substr(strstr($ht->request($url),"\r\n\r\n"),4);

file_put_contents('./aa.png',$p);

*/

?>

如果发送请求的页面需要登录,只需在头信息中增加 “cookie: .....” 就可以了,cookie后面的信息可以通过抓包查看。

php 利用socket发送GET,POST请求

作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步.最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅.希望分享给大家.本文需要有一定http ...

网络编程(一) 利用NSURLSession发送GET POST请求

Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问. 使用NSURLSession进行网络请求的流程: 1.构造NSURL 2.构造N ...

c++如何使用SOCKET 发送HTTP1.1 GET POST请求包

如何使用SOCKET 发送HTTP1.1 GET POST请求包 分类: 无线通信 C/C++2009-10-29 10:58 14259人阅读 评论(15) 收藏 举报 socket服务器actio ...

android firmware 利用UDP socket发送Magic Packet--python版本

android firmware 利用UDP socket发送Magic Packet--python版本 #!/usr/bin/python import sys, time from struct ...

android firmware 利用UDP socket发送Magic Packet--c语言版本

android firmware 利用UDP socket发送Magic Packet 1 Magic Packet格式: 6个0xFF + 16个Dst Mac Address 2 代码需要设置目的 ...

利用postman进行接口测试并发送带cookie请求的方法

做web测试的基本上都用用到postman去做一些接口测试,比如测试接口的访问权限,对于某些接口用户A可以访问,用户B不能访问:比如有时需要读取文件的数据.在postman上要实现这样测试,我们就必要 ...

socket发送请求,协程

1.socket发送请求 #发送请求的方式 #方式一 import requests ret = requests.get("https://www.baidu.com/s?wd=abc&q ...

利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)

在非常多企业级应用中,我们都没法直接通过开发语言sdk包封装的http工具来模拟http复合表单(multipart/form-data),特别是在跨语言跨平台的编程过程中.事实上实现方 ...

socket编程实现HTTP请求

利用c++语言+socket实现HTTP请求,请求获得的数据效果图如下: HTTP协议的下一层是TCP,根据HTTP协议只需要利用TCP发送下面的数据到达目标主机,目标主机就会发送相应的数据到客户端. ...

随机推荐

SSH框架整合(代码加文字解释)

一.创建数据库并设置编码. A) create database oa default character set utf8. 二.MyEclipse工程 A) 在Myeclipse里创建web工程, ...

solrcloud使用中遇到的问题及解决方式

首先声明,我们团队在使用solrcloud过程中踩了一些坑,同事(晓磊和首富)进行了总结,我列到我的博客上做记录用: Q:为什么Solr里面的时间比数据库里面早8小时? Solr默认采用的时区是UTC ...

ubuntu 14.04 nagios4+ndoutils2.0+centreon2.5.4配置

ubuntu 14.04 nagios4+ndoutils2.0+centreon2.5.4(原创) 开发应用centreon是开源的IT监控软件,由法国人于2003年开发,最初名为Oreon,并于2 ...

****php redis 的使用方法

phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系很有用;以下是redis官方提供的命令使用技巧:下载地址如下:https://github.com/owlie ...

hadoop mapreduce 优化

http://www.cnblogs.com/c840136/archive/2013/03/10/2952887.html http://irwenqiang.iteye.com/blog/1535 ...

php tpl 模板页面如和给js文件传参数

有一个参数,服务器传给了php 模板页面,但模板包含的js需要得到这个参数值.如何处理: 一,在引入页面前加一句代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值