http请求

java 模拟http请求,通过流(stream)的方式,发送json数据和文件

断了今生、忘了曾经 提交于 2019-12-06 14:30:22
发送端: /** * 以流的方式 * 发送文件和json对象 * * @return */ public static String doPostFileStreamAndJsonObj(String url, List<String> fileList, JSONObject json) { String result = "";//请求返回参数 String jsonString = json.toJSONString();//获得jsonstirng,或者toString都可以,只要是json格式,给了别人能解析成json就行 // System.out.println("================"); // System.out.println(xml);//可以打印出来瞅瞅 // System.out.println("================"); try { //开始设置模拟请求的参数,额,不一个个介绍了,根据需要拿 String boundary = "------WebKitFormBoundaryUey8ljRiiZqhZHBu"; URL u = new URL(url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); conn.setDoOutput(true

爬虫 >>> Requests 模块

孤人 提交于 2019-12-06 14:22:37
爬虫的定义    向网站发起请求,获取资源后分析并提取 有用数据 (我们的爬虫程序只提取网页代码中对我们有用的数据) 爬虫的基本流程     1、发起请求 使用 http 库向目标站点发起请求,即发送一个 Request Request 包含:请求头、请求体等 注:selenium 也是经常用到的模块,可以解析 html 页面 2、获取响应内容 如果服务器能正常响应,则会得到一个 Response Response 包含:html,json,图片,视频等 3、解析内容 解析 html 数据:正则表达式,第三方解析库如 Beautifulsoup,pyquery 等 解析 json 数据:json 模块 解析二进制数据:以 b 模式写入文件 4、保存数据 保存在数据库: MySQL, mongoDB, redis等 或者文件中 官网链接: https://2.python-requests.org//en/master/ 下载安装:pip3 install requests Requests   1:发送 GET 和 POST 请求(常用)        使用 request 发送 get 和 post 请求,访问的数据都会拼接成这种形式:k1=xxx&k2=yyy&k3=zzz        post 请求的参数存放在请求体中(可以用浏览器查看, 存放于 form-data 中)

HTTP状态代码含义

狂风中的少年 提交于 2019-12-06 14:15:18
状态代码(也称作错误代码),指为服务器所接收每个请求(网页点击)分配的 3 位数代码。多数有效网页点击都有状态代码 200("正常")。如果"网页未找到"则会生产常见的404错误。了解各种状态代码的含义可以更迅速的发现问题,找到问题,解决问题。可以很大程度上的提高工作效率。下面是一些常见的状态代码。 1xx(临时响应)   用于表示临时响应并需要请求者执行操作才能继续的状态代码。 代码 说明   100(继续) 请求者应当继续提出请求。服务器返回此代码则意味着,服务器已收到了请求的第一部分,现正在等待接收其余部分。   101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备进行切换。 2xx(成功)   用于表示服务器已成功处理了请求的状态代码。 代码 说明   200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果您的 robots.txt 文件显示为此状态,那么,这表示 Googlebot 已成功检索到该文件。   201(已创建) 请求成功且服务器已创建了新的资源。   202(已接受) 服务器已接受了请求,但尚未对其进行处理。   203(非授权信息) 服务器已成功处理了请求,但返回了可能来自另一来源的信息。   204(无内容) 服务器成功处理了请求,但未返回任何内容。   205(重置内容) 服务器成功处理了请求,但未返回任何内容

Fiddler抓包工具的使用

青春壹個敷衍的年華 提交于 2019-12-06 14:08:58
目录 Fiddler简介 HTTP协议介绍 HTTP协议介绍 Fiddler抓包解析 HTTP Request的顺序,从1开始,按照页面加载请求的顺序递增。 Fiddler右侧面板使用介绍 Fiddler命令行工具 Fiddler应用 Fiddler简介 Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据,Fiddler包含了一个强大的基于事件脚本的子系统,并且能使用.net语言进行扩展,你对HTTP协议越了解,你就越能掌握Fiddler的使用方法。你越使ee用Fiddler,就越能帮助你了解HTTP协议。Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具。 Fiddler的工具原理: Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不会影响别的程序。不过如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。 HTTP协议介绍 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML

Tornado

允我心安 提交于 2019-12-06 13:47:13
前言 Tornado是使用Python编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。 Tornado是基于Bret Taylor和其他人员为FriendFeed所开发的网络服务框架,当FriendFeed被Facebook收购后得以开源。不同于那些最多只能达到10,000个并发连接的传统网络服务器,Tornado在设计之初就考虑到了性能因素,旨在解决C10K问题,这样的设计使得其成为一个拥有非常高性能的框架。此外,它还拥有处理安全性、用户验证、社交网络以及与外部服务(如数据库和网站API)进行异步交互的工具。 Tornado 所做的是能够快速简单地编写高速的Web应用。如果编写一个可扩展的社交应用、实时分析引擎,或RESTful API,那么简单而强大的Python,以及Tornado正是为你准备的! 总之,Tornado也很强大!!! 下载和安装 # pip安装 pip3 install tornado # 源码安装 tar xvzf tornado-4.4.1.tar.gz cd tornado-4.4.1 python setup.py build sudo python setup.py install 源码下载: tornado-1.2.1.tar.gz 、

nginx配置及性能调优

爱⌒轻易说出口 提交于 2019-12-06 12:38:08
https://www.toutiao.com/i6765746230141125132/?timestamp=1575450096&app=news_article&group_id=6765746230141125132&req_id=201912041701360100260760263C04643 2.4、配置默认主页 location / { index index.html index.htm; autoindex off; } 2.5、配置反向代理 location / { proxy_pass http://localhost:8888; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 2.6、URL 美化(省略 index.html 入口文件) location / { try_files $uri $uri/ /index.html; } 2.7、upstream 代码块 upstream 代码块位于 http 代码块内部。 upstream 用于对服务器集群进行负载均衡的配置。 upstream name { ip_hash; server

Python Requests库快速入门

只谈情不闲聊 提交于 2019-12-06 11:50:33
发送请求 使用 Requests 发送网络请求非常简单。 一开始要导入 Requests 模块: >>> import requests 然后,尝试获取某个网页。本例子中,我们来获取 Github 的公共时间线: >>> r = requests.get('https://api.github.com/events') 现在,我们有一个名为 r 的 Response 对象。我们可以从这个对象中获取所有我们想要的信息。 Requests 简便的 API 意味着所有 HTTP 请求类型都是显而易见的。例如,你可以这样发送一个 HTTP POST 请求: >>> r = requests.post('http://httpbin.org/post', data = {'key':'value'}) 漂亮,对吧?那么其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS 又是如何的呢?都是一样的简单: >>> r = requests.put('http://httpbin.org/put', data = {'key':'value'}) >>> r = requests.delete('http://httpbin.org/delete') >>> r = requests.head('http://httpbin.org/get') >>> r =

[网络] 在浏览器输入URL回车之后发生了什么

狂风中的少年 提交于 2019-12-06 10:59:02
目录 一 前言 二 URL解析 三 DNS域名解析 1 IP 地址 2 什么是域名解析 3 浏览器如何通过域名去查询 URL 对应的 IP 呢 4 小结 四 建立连接 1 TCP三次握手 2 SYN攻击 3 为什么不能用两次握手进行连接 五 发送HTTP请求 1 请求报文介绍   2 请求流程 六 服务器处理请求并返回 HTTP 报文 1. 服务器 2. MVC 后台处理阶段 3. HTTP响应报文 七 浏览器解析渲染页面 1 根据 HTML 解析 DOM 树 2 根据 CSS 解析生成 CSS 规则树 3 结合 DOM 树和 CSS 规则树,生成渲染树 4 根据渲染树计算每一个节点的信息(布局) 5 根据计算好的信息绘制页面 八 断开连接 1 四次挥手 2 为什么连接的时候是三次握手,关闭的时候却是四次握手? 3 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态? 回到顶部 一 前言   打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解!      从URL输入到页面展现   总体来说分为以下几个过程:   (1)URL 解析   (2)DNS 解析:将域名解析成 IP 地址   (3)TCP 连接:TCP 三次握手   (4)发送 HTTP 请求   (5

在浏览器输入URL回车之后发生了什么?(超详细版)

≡放荡痞女 提交于 2019-12-06 10:57:44
前言   这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了。   这篇笔记是我这两天看了数十篇文章总结出来的,所以相对全面一点,但由于我是做前端的,所以会比较重点分析浏览器渲染页面那一部分,至于其他部分我会罗列出关键词,感兴趣的可以自行查阅, 注意: 本文的步骤是建立在,请求的是一个简单的 HTTP 请求,没有 HTTPS、HTTP2、最简单的 DNS、没有代理、并且服务器没有任何问题的基础上,尽管这是不切实际的。 大致流程 URL 解析 DNS 查询 TCP 连接 处理请求 接受响应 渲染页面 一、URL 解析   地址解析:     首先判断你输入的是一个合法的 URL 还是一个待搜索的关键词,并且根据你输入的内容进行自动完成、字符编码等操作。   HSTS     由于安全隐患,会使用 HSTS 强制客户端使用 HTTPS 访问页面。详见: 你所不知道的 HSTS [1] 。   其他操作     浏览器还会进行一些额外的操作,比如安全检查、访问限制(之前国产浏览器限制 996.icu)。   检查缓存      二、DNS 查询   基本步骤        1. 浏览器缓存     浏览器会先检查是否在缓存中,没有则调用系统库函数进行查询。   2. 操作系统缓存    

nginx将所有http请求重定向至https

断了今生、忘了曾经 提交于 2019-12-06 10:21:48
转自: https://www.cnblogs.com/lpjnote/p/10759847.html 可以把所有的HTTP请求通过rewrite重写到HTTPS上 配置 方法一 server{ listen 80; server_name XXXXX.com; //你的域名 if($ssl_protocol = "") {rewrite ^(.*)$ https://XXXXXX.com permanent;} location ~ / { index index.html index.php index.htm;    } } 方法二 server{ listen 80; server_name XXXXX.com; //你的域名 if($ssl_protocol = ""){ return 301 https://$server_name$request_uri;} location ~ / { index index.html index.php index.htm;    } } 方法三 server{ listen 80; server_name XXXXX.com; //你的域名 if($ssl_protocol = ""){rewrite ^(.*)$ https://$host$1 permanent;} location ~ / { index index