【图文】简析易语言网页POST

科技   2024-07-18 21:30   江苏  

点击上方微信公众号,可快速关注

【编者按】关于网页POST,很多人都让我讲一讲,于是就有了这篇话题。在分享之前,先讲一句,下面的内容,可能不是大家想要看到的,但事实可能就是如此。


Part.1

POST概念简介


关于网页POST,很多人都让我讲一讲,其实吧,我觉得POST就是构造一个“内容”顺利被访问网站接受并给予正确的反馈,这里面突破了类似浏览器等“约束”,只通过代码就实现了我们所想要的“网页访问”,因为大部分这类的需求是通过POST这个访问方式实现的,而我们易圈似乎已经这类网页访问俗称为“POST”。


Part.2

三要素



从“底层逻辑”上去分析,实现POST访问成功无外乎以下这个三要素:提交信息、协议头、Cookie(这个分类可能不够严谨,但我觉得很实用)——

1. 提交信息。我觉得这是POST的最核心部分,以登录而言,主要是把一些关键信息,如账号、密码等一些形式,进行打包,然后提交给服务器的数据。这些数据可以是简单的键值对,也可以是复杂的JSON对象或其他格式的数据。

2. 协议头。英文表示为Header,协议头类似于访问的一些固定要素,少了它,可能会访问失效或者失败,它的主要内容有很多,我们常用的可能是包含User-Agent、Content-Type、Referer、Accept等等。

3. Cookie。其实cookie严格意义上也在协议头的范畴里面,但是单独拿出来就说明了它的重要性,在某些情况下,Cookie也是POST请求不可或缺的一部分。Cookie用于在多个请求之间保持会话状态,通过在POST请求中包含正确的Cookie,客户端可以证明自己的身份或继续之前的会话。


Part.3

代码解读



讲了这么多原理,那想用代码实现,该怎么操作呢?
这也很简单,一行代码就行了,网页_访问_对象()[来源精易模块]

仔细看下精易模块中对这个代码的注释,我觉得讲得很详细了
子程序名:网页_访问_对象
使用WinHttp的对象方式访问网页(如果有机会,我们再讲讲winhttp和winnet)

    返回值类型:字节集

    参数<1>的名称为“网址”,类型为“文本型”。注明:完整的网页地址,必须包含http://或者https://

    参数<2>的名称为“访问方式”,类型为“整数型”,允许接收空参数数据。注明:0=GET 1=POST 2=HEAD 3=PUT  4=OPTIONS  5=DELETE  6=TRACE  7=CONNECT

    参数<3>的名称为“提交信息”,类型为“文本型”,允许接收空参数数据。注明:"POST"专用   自动UTF8编码。

    参数<4>的名称为“提交Cookies”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:设置提交时的cookie

    参数<5>的名称为“返回Cookies”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回的Cookie

    参数<6>的名称为“附加协议头”,类型为“文本型”,允许接收空参数数据。注明:一行一个请用换行符隔开。

    参数<7>的名称为“返回协议头”,类型为“文本型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:返回的协议头。

    参数<8>的名称为“返回状态代码”,类型为“整数型”,接收参数数据时采用参考传递方式,允许接收空参数数据。注明:网页返回的状态代码,例如:200302404等。

    参数<9>的名称为“禁止重定向”,类型为“逻辑型”,允许接收空参数数据。注明:默认不禁止网页重定向。

    参数<10>的名称为“字节集提交”,类型为“字节集”,允许接收空参数数据。注明:提交字节集数据。

    参数<11>的名称为“代理地址”,类型为“文本型”,允许接收空参数数据。注明:代理地址,格式为 8.8.8.8:88

    参数<12>的名称为“超时”,类型为“整数型”,允许接收空参数数据。注明:秒|默认为15,-1为无限等待。

    参数<13>的名称为“代理用户名”,类型为“文本型”,允许接收空参数数据。注明:用户名。

    参数<14>的名称为“代理密码”,类型为“文本型”,允许接收空参数数据。注明:密码。

    参数<15>的名称为“代理标识”,类型为“整数型”,允许接收空参数数据。注明:代理标识,默认为10为路由器。

    参数<16>的名称为“对象继承”,类型为“对象”,允许接收空参数数据。注明:此处可自行提供对象,不再主动创建。

    参数<17>的名称为“是否自动合并更新Cookie”,类型为“逻辑型”,允许接收空参数数据。注明:默认为真,自动合并更新。

    参数<18>的名称为“是否补全必要协议头”,类型为“逻辑型”,允许接收空参数数据。注明:当附件协议头为空时自动添加必要的UA协议头 默认为真,假将不再添加非传入协议头。

    参数<19>的名称为“是否处理协议头大小写”,类型为“逻辑型”,允许接收空参数数据。注明:将协议头中的键名首字母处理为大写  默认为真。

其实我们要实现一个POST网页访问,只需要使用这个代码,并把相关参数填写清楚——
网页_访问_对象(网址,1,提交信息,提交Cookies,,附加协议头)
基本上就用几个关键参数,其他都用不上。如果正确写上,就能成功访问。


Part.4

进阶答疑



1. 如果POST这么轻松,为啥我老是实现不了呢?为啥市面各类定制费用都很高呢?

原因很简单,就是JS加密。怎么讲,就是我们刚刚提到的三要素,无论是提交信息、协议头还有Cookie,都有可能涉及加密内容,如果你加密的内容没找对,或者还原不出来,你怎么能够正确地提交正确的信息呢?提交的数据不正确,怎么能够通过服务端的审核进而得到正确的反馈内容呢?这个加密是主要是用JS这个语言来完成的,随着技术的更新迭代,JS加密的方式越来越复杂,以我的经验,在2010年阶段时,某讯的登录加密是MD5,但现在呢?

2. JS这么重要,那学起来容易吗?
平心而论,JS学透比较难,JS加密你可以与APP逆向类比,JS就是一个语言,涉及各个方面,学会基础你可能还是看不懂加密的代码,这是一个比较系统的学习,除了基础还需要一些技巧。

3. 网上有很多教程,可以观看吗?
我觉得可以看,如果你是一个纯新手,你甚至去看看2010年时候的教程都没问题,为啥?你是一个新手,你需要的是理解如何组合post三要素,这些教程能够完全满足你的需求,教程并不一定越新越好,就好像张无忌学太极剑,学的是剑意,不是招式,谁能把post主要的框架讲明白谁的教程就是好教程。如果你想要学习JS加密的,那建议你从简到难,最好多看看最新的教学视频,更有学习意义,老视频里使用的网站早就更新升级了N代了,你连依葫芦画瓢的空间都不存在。

易语言自习室
致力于易语言的推广,打造自学者的编程学习乐园,扎根易语言,面向全编程!
 最新文章