url

HTTP GET 与 POST 的区别

馋奶兔 提交于 2020-03-18 10:19:11
某厂面试归来,发现自己落伍了!>>> 什么是 GET 请求方法 ? GET 方法应该只用于读取数据。 浏览器直接发出 GET 只能由一个 url 触发,要在 url 之外带参数只能在 url 上带 querystring。 什么是 POST 请求方法 ? POST 方法是向指定资源提交数据,请求服务器创建或修改资源(如:提交表单和上传文件)。 表单的数据会被浏览器编码到 HTTP 请求中的 body 中,body 体中主要有以下两种格式。 1、application/x-www-form-urlencoded:传输简单的数据,"key1=value1&key2=value2"。 2、multipart/form-data:传文件,相对第一种编码方式处理文件这种二进制的数据更高效。 不是幂等,不能保证每次调用都能得到相同的结果。 幂等属性:GET、HEAD、PUT 和 DELETE HTML 标准对 HTTP 协议的用法的约定中要求,GET 把参数放在 URL 中传递,POST 将数据放在请求体中。 区别 GET POST 页面后退或刷新 无变化(因为有缓存数据) 数据需要重新提交 存为书签 ture 表单数据会丢失,需要重新提交 请求缓存 浏览器主动缓存 需要手动设置 保存在浏览器历史记录 ture false 编码类型 application/x-www-from

android之HttpURLConnection

时间秒杀一切 提交于 2020-03-18 10:10:48
android之HttpURLConnection 放在这备用先。 1.HttpURLConnection连接URL 1)创建一个URL对象 URL url = new URL( http://www.baidu.com ); 2)利用HttpURLConnection对象从网络中获取网页数据 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 3)设置连接超时 conn.setConnectTimeout(6*1000); 4)对响应码进行判断 if (conn.getResponseCode() != 200) //从Internet获取网页,发送请求,将网页以流的形式读回来 throw new RuntimeException("请求url失败"); 5)得到网络返回的输入流 InputStream is = conn.getInputStream(); 6)String result = readData(is, "GBK"); //文件流输入出文件用outStream.write 7)conn.disconnect(); 总结: --记得设置连接超时,如果网络不好,Android系统在超过默认时间会收回资源中断操作. --返回的响应码200,是成功. -

PHP urldecode()与urlencode()函数

别等时光非礼了梦想. 提交于 2020-03-18 09:01:19
链接:https://blog.csdn.net/tashanhongye/article/details/49668835 urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%,对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。 urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符。 urlencode()函数原理就是首先把中文字符转换为十六进制,然后在每个字符前面加一个标识符%,对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。 urldecode()函数与urlencode()函数原理相反,用于解码已编码的 URL 字符串,其原理就是把十六进制字符串转换为中文字符。 For Example: index.html <?php header("Content-Type:text/html;charset=utf-8"); $parm=urlencode("演示PHP-MYSQL"); $url="index.php?par=".$parm; ?> <!DOCTYPE html PUBLIC '-//W3C//DTD

分析Ajax爬取今日头条街拍

瘦欲@ 提交于 2020-03-18 07:05:28
分析Ajax爬取今日头条街拍 站点分析 源码及遇到的问题 代码结构 方法定义 需要的常量 关于在代码中遇到的问题 01. 数据库连接 02.今日头条的反爬虫机制 03. json解码遇到的问题 04. 关于response.text和response.content的区别 源代码 站点分析 首先,打开头条,在搜索框输入关键字之后,在返回的页面中,勾选Perserve log,这玩意儿在页面发生变化的时候,不会清除之前的交互信息. 在返回的response中,我们看不到常见的HTML代码,所以初步判定,这个网站是通过ajax动态加载的. pic-1581682361199.png 切换到XHR过滤器,进一步查看. pic-1581682361200.png 发现随着网页的滚动,会产生类似这样的的Ajax请求出来. 仔细查看内容,可以看到与网页中条目对应的title和article_url. 所以初步思路,通过article_url字段先抓取文章条目 分析json数据,可以看到,这里有 article_url ,另外,这次要抓取的是图集形式的页面,所以要注意下这个 has_gallery 然后我们再来看具体的页面 在具体页面的html中,我们发现,图片的所有链接直接在网页源代码中包含了,所以,我们直接拿到源码,正则匹配一下就好了. pic-1581682361200.png 至此

爬虫相关

无人久伴 提交于 2020-03-18 03:29:50
一、反爬机制和应对措施 1、通过Headers 措施:添加User-Agent和Referer 2、基于用户行为 措施:代理IP、延迟爬取 3、动态页面 措施:requests模拟ajax请求,如果请求加密了使用selenium+phantomJS 验证码解决:Tesseract 二、Scrapy运行机制及优缺点 从start_urls里获取第一批URL并发送给Scrapy引擎,引擎交给调度器进入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器去下载资源,并将响应交给Spider编写的解析方法做提取处理 1、如果提取出需要的数据,交给管道进行处理 2、如果提取出URL,则继续入请求队列,执行前面的操作 优点: 1、异步的 2、采取可读性更强的Xpth代替正则 3、可以同时在不同的URL上爬取 4、支持Shell方式,方便独立调试 5、写中间件,方便写一些同一的过滤器 6、通过管道方式存入数据库 缺点: 1、基于python的爬虫框架,扩展性比较差 2、基于twisted异步框架,出错后不会停掉其他任务。数据出错很难察觉 三、代理IP及维护 透明代理:客户端根本不需要知道有代理服务器的存在,但是它传送的任然是真是的IP 普通匿名代理:能隐藏掉客户机的真是IP,但会改变我们的请求信息,服务器端有可能会认为我们使用了代理 高匿名代理:不改变客户机的请求,客户的真实IP是隐藏的

spider基础知识

不羁的心 提交于 2020-03-18 03:29:30
1. 描述下scrapy框架运行的机制? 答:从start_urls里获取第一批url并发送请求,请求由引擎交给调度器入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理:1. 如果提取出需要的数据,则交给管道文件处理;2. 如果提取出url,则继续执行之前的步骤(发送url请求,并由引擎将请求交给调度器入队列...),直到请求队列里没有请求,程序结束。 2. scrapy和scrapy-redis有什么区别?为什么选择redis数据库? 答: 1) scrapy是一个Python爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。 而scrapy-redis一套基于redis数据库、运行在scrapy框架之上的组件,可以让scrapy支持分布式策略,Slaver端共享Master端redis数据库里的item队列、请求队列和请求指纹集合。 2) 为什么选择redis数据库,因为redis支持主从同步,而且数据都是缓存在内存中的,所以基于redis的分布式爬虫,对请求和数据的高频读取效率非常高。 3. 反爬虫的机制有哪些? 答: 1) User—Agent 2) 代理ip 3) 访问频率限制 4) 验证码处理 5) Cookie 6) 动态HTML数据加载 4. 实现模拟登录的方式有哪些? 答: 1)

初识WEB:输入URL之后的故事

时光毁灭记忆、已成空白 提交于 2020-03-17 19:46:35
初识WEB:输入URL之后的故事 1. 概述 2. HTTP请求过程 3. 相关性能检测及优化手段 4. 浏览器的呈现过程 5. 浏览器的呈现引擎 6. 引用及延伸阅读 概述 为什么输入 www.cnblogs.com 之后敲一个回车,浏览器就会显示我们所看到的内容?这家伙在背后到底偷偷的干了哪些事情?今天我们就来挖掘一下这背后的故事。 HTTP请求过程 为直观明了,先上一张图: 画完之后,才发现原来我的字写的这么难看,别喷我,小伙伴们! 下面是详细的步骤以及说明: 输入URL,敲回车。 针对当前URL检查是否存在本地缓存, 如果存在,则会加载本地缓存进行呈现。如图,经过 (1)-> (2) ->(9) ->(10)。 ( 感谢“我是你的猪”的纠错 :) ) 根据URL找到对应的IP地址。这一步通常被称为DNS轮询,这里面是有缓存机制的。缓存的顺序依次为:浏览器缓存->操作系统缓存->路由器缓存->DNS提供商缓存->DNS提供商轮询。 建立TCP连接到上一步找到的机器 用上一步建立的连接发送http request 等待并接收http response 关闭TCP连接,视情况而定,http1.1已经支持keep-alive。那么这个TCP请求是可以被后面的request利用的,这样就可以减少不断建立连接而造成的损失。 检查状态码,如果response的状态码出现3XX(跳转)

前后台交互协议与转码问题

隐身守侯 提交于 2020-03-17 11:16:46
目录 前言 1、HttpServletRespons 状态码 1.1、简要分类 1.2、状态码 2、交互请求 3、乱码问题 4、面向对象的软件设计概况 前言 全称 中文名称 Htp HyperText Transfer Protocol 超文本传输协议 Http 是一个简单的请求-响应协议,基于应用层,架构在TCP上的可靠性通信协议。客户端与服务器之间的信息交互必须遵守 Http 协议,客户端与服务器的请求和响应消息的头以 ASCII 码形式给出;而消息内容则具有一个类似的 MIME 的格式。 协议 :两个需要通过网络同行的程序达成的约定。 1、HttpServletRespons 状态码 1.1、简要分类 分类 含义 注释 常见状态码 1XX Informational(信息性状态码) 请求正在处理中 2XX Success(请求处理成功) 请求正常处理完毕 200:请求成功执行 3XX Redirection(重定向) 需要再进行附加操作完成请求 301:所请求的页面已经转移到一个新的 URL。 4XX Client Error(客户端错误状态码) 服务器无法处理 404: 服务器无法找到所请求的页面。 5XX Server Error(服务器错误状态码) 服务器处理请求出错 500:未完成的请求。服务器遇到了一个意外的情况。 1.2、状态码 状态码 含义 解释 100

C#请求API数据

落爺英雄遲暮 提交于 2020-03-17 04:06:36
后台发出 Http 请求 Get 无参请求 //1. 创建 url var url = "网址"; //2. 天加链接 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); //3. 创建一个响应,存储请求获取的响应, 响应 = 请求获取的响应 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //4. 创建一个变量,接收响应的数据 var responseText = response.GetResponseStream(); //5. 使用流读取信息,并赋值给一个变量 var text = new StreamReader(responseText).ReadToEnd(); Get 有参请求 var url = "网址 ?page=1&rows=10&sort=indexs&SearchName="; var postDate = "page=1&rows=10&sort=indexs&SearchName="; HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); request.Method = "get";

js---post与get请求的区别

萝らか妹 提交于 2020-03-17 03:00:51
request获取请求参数 最为常见的客户端传递参数方式有两种: 浏览器地址栏直接输入:一定是GET请求; 超链接:一定是GET请求; 表单:可以是GET,也可以是POST,这取决与<form>的method属性值; GET请求和POST请求的区别: 1.效率 GET的意思是『得』,从服务器获取数据(也可以上传数据,参数就是),效率较高 POST的意思是『给』,但可以向服务器发送数据和下载数据,效率不如GET 2.缓存 GET 请求能够被缓存,默认的请求方式也是有缓存的 POST请求默认不会缓存 缓存是针对URL来进行缓存的,GET请求由于其参数是直接加在URL上-的,一种参数组合就有一种URL的缓存,可以根据参数来进行一一对应,重复请求是幂等的(不论请求多少次,结果都一样); 而POST请求的URL没有参数,每次请求的URL都相同,数据体(HTTPBody)可能不同,无法一一对应,所以缓存没有意义 3.安全性 GET的所有参数全部包装在URL中,明文显示,且服务器的访问日志会记录,非常不安全 POST的URL中只有资源路径,不包含参数,参数封装在二进制的数据体中,服务器也不会记录参数,相对安全。所有涉及用户隐私的数据都要用POST传输 POST的安全是相对的,对于普通用户来说他们看不到明文,数据封装对他们来说就是屏障。但是对于专业人士,它们会抓包会分析