网页中flash数据抓取(讲参数会被打包在数据报中传输(组图) )

优采云 发布时间: 2021-11-14 06:15

  网页中flash数据抓取(讲参数会被打包在数据报中传输(组图)

)

  get方法:data参数通过URL字符串本身传递,可以直接从服务端的变量\'QUERY_STRING\'中读取,效率更高,但缺乏安全性,不能处理复杂的数据(只有字符String例如,在servlet/jsp中,就不能处理java的vector等功能)。post方式:在传输方式上,将参数打包在数据报中进行传输,从环境变量CONTENT_LENGTH中读取,方便传输较大的数据。同时,由于浏览器地址栏中的数据没有暴露,安全性相对较高,但这样的处理效率会受到影响。

  get 和 post 方法总结

  get方法:data参数通过URL字符串本身传递,可以直接从服务端的变量\'QUERY_STRING\'中读取,效率更高,但缺乏安全性,不能处理复杂的数据(只有字符String ,比如在servlet/jsp中,就不能处理java的功能,比如vector)。

  post方式:在传输方式上,将参数打包在数据报中进行传输,从环境变量CONTENT_LENGTH中读取,方便传输较大的数据。同时,由于浏览器地址栏中的数据没有暴露,安全性相对较高,但这样的处理效率会受到影响。

  get请求是指客户端请求一个uri,服务器返回客户端请求的uri。post请求意味着客户端在请求时需要提交数据。这就像提交表格一样。要提交的数据将放在请求消息的正文部分。服务器收到这样的请求后,通常需要对数据进行处理。

  在 Form 中,您可以使用 post 或 get。它们都是方法的合法值。但是,post 和 get 方法的使用至少有两个区别:

  1、Get 方法通过 URL 请求传递用户的输入。Post 方法采用另一种形式。

  2、Get方法提交时需要使用Request.QueryString获取变量的值,Post方法提交时必须通过Request.Form访问提交的内容。

  仔细研究下面的代码。你可以运行它来感受一下:

  

通过get方法传递来的字符串是: ""

通过Post方法传递来的字符串是: ""

  将上面的代码保存为getpost.asp,然后运行。首先,测试post方法。此时浏览器的url没有变化,返回结果为:

  通过 Post 方法传递的字符串是:“Hello World”

  然后用get方法提交测试,注意浏览器的url变成了:

  +世界

  返回的结果是:

  通过get方法传递的字符串是:“Hello World”

  最后通过post方法提交后,浏览器的url还是:

  +世界

  返回的结果变为:

  通过get方法传递的字符串是:“Hello World”

  通过 Post 方法传递的字符串是:“Hello World”

  提示:通过 get 方法提交数据可能会导致安全问题。例如,登陆页面。通过get方法提交数据时,URL上会出现用户名和密码。如果:

  1、登录页面可以被浏览器缓存;2、 其他人可以访问客户的机器。

  然后,其他人可以从浏览器历史记录中读取该客户的帐户和密码。因此,在某些情况下,get 方法会导致严重的安全问题。建议使用Form中的post方法。

  Python下载网页的几种方法

  通过get方法:

  fd = urllib2.urlopen(url_link)

data = fd.read()

  使用get方法时,url类似如下格式:

  index.jsp?id=100&op=bind

  GET 标头如下:

  GET /sn/index.php?sn=123&n=asa HTTP/1.1

Accept: */*

Accept-Language: zh-cn

host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: 12

Connection:close

  get方法还可以通过以下方式实现:

  def GetHtmlSource_Get(htmurl):

htmSource = ""

try:

urlx = httplib.urlsplit(htmurl)

conn = httplib.HTTPConnection(urlx.netloc)

conn.connect() #建立连接

conn.putrequest("GET", htmurl, None) #请求类型

conn.putheader("Content-Length", 0)

conn.putheader("Connection", "close")

conn.endheaders()

res = conn.getresponse()

htmSource = res.read()

except Exception(), err:

trackback.print_exec()

conn.close()

return htmSource

  使用post方法时,POST方法将请求参数封装在HTTP请求数据中,以name/value的形式出现,可以传输大量数据,也可以用来传输文件。POST 消息的头部如下:

  POST /sn/index.php HTTP/1.1

Accept: */*

Accept-Language: zh-cn

host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: 12

Connection:closes

n=123&n=asa

  不管是post还是get,他们传递的数据都必须是url编码的。每对名称/值由一个和号分隔;表单中的每对名称/值都用 = 分隔;如果用户没有为名称输入值,名称仍会出现,但没有值。; 任何特殊字符(即那些不是简单的七位 ASCII 码的字符,例如中文字符)都会以带有百分号 % 的十六进制编码。urllib 库提供了一个函数来实现 URL 编码:

  search=urllib.urlencode({\'q\':\'python\'})

#\'q=python\'

  通过邮寄发送请求:

  import httplib,urllib;

#定义需要进行发送的数据

params = urllib.urlencode({\'cat_id\':\'6\',

\'news_title\':\'标题-Test39875\',

\'news_author\':\'Mobedu\',

\'news_ahome\':\'来源\',

\'tjuser\':\'carchanging\',

\'news_keyword\':\'|\',

\'news_content\':\'测试-Content\',

\'action\':\'newnew\',

\'MM_insert\':\'true\'});

#定义一些文件头

headers = {"Content-Type":"application/x-www-form-urlencoded",

"Connection":"Keep-Alive",

"Referer":"http://192.168.1.212/newsadd.asp?action=newnew"};

#与网站构建一个连接

conn = httplib.HTTPConnection("192.168.1.212");

#开始进行数据提交 同时也可以使用get进行

conn.request(method="POST",url="/newsadd.asp?action=newnew",body=params,headers=headers);

#返回处理后的数据

response = conn.getresponse();

#判断是否提交成功

if response.status == 302:

print "发布成功!";

else:

print "发布失败";

#关闭连接

conn.close();

  它也可以类似于 get 方法来实现:

  def GetHtmlSource_Post(getString):

htmSource = ""

try:

url = httplib.urlsplit("http://app.sipo.gov.cn:8080")

conn = httplib.HTTPConnection(url.netloc)

conn.connect()

conn.putrequest("POST", "/sipo/zljs/hyjs-jieguo.jsp") #post方法

conn.putheader("Content-Length", len(getString))

conn.putheader("Content-Type", "application/x-www-form-urlencoded")

conn.putheader("Connection", " Keep-Alive")

conn.endheaders()

conn.send(getString) #Http包的body

f = conn.getresponse()

if not f:

raise socket.error, "timed out"

htmSource = f.read()

f.close()

conn.close()

except Exception(), err:

trackback.print_exec()

conn.close()

return htmSource

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线