网页中使用js可以实现调用用户机器上的http服务吗?

你说的调用http服务,是指的用js去发送http请求是吧。

在前端,你可以用jquery的Get和Post方法分别发起对远程主机的Get和Post请求,这两个请求都是Http请求的。

如果你使用node.js 也可以用http.createRequest() 函数对指定远程主句发送http请求。

如何使用javascript获取网页(jsp)上的文字内容?

1、简单的jsoup爬取

String url="a.atimo.cn";//静态页面链接地址

Document doc = Jsoup.connect(url).userAgent("Mozilla").timeout(4000).get();

if(doc!=null){

Elements es = doc.select("div.comments>ul>li");//

System.out.println(es);

if(es!=null && es.size()>0){

for (Element element : es) {

String link = element.select("div>h3").attr("href");

String title = element.select("div>h3").text();

String author = element.select("div.c-abstract>em").text();

String content = element.select("dd>a>div.icos>i:eq(1)").text();

}

}

}

通过jsop解析返回Document 使用标签选择器,选择页面标签中的值,即可获取页面内容。

2.延时加载,有些网站存在延时加载,表格内容,或者嵌入页面形式的加载的页面

//构造一个webClient 模拟Chrome 浏览器

String url = "https://www.cnblogs.com/atimo/";

WebClient webClient = new WebClient(BrowserVersion.CHROME);

//支持JavaScript

webClient.getOptions().setUseInsecureSSL(true);

webClient.getOptions().setJavaScriptEnabled(true);

webClient.getOptions().setCssEnabled(false);

webClient.getOptions().setActiveXNative(false);

webClient.getOptions().setCssEnabled(false);

webClient.getOptions().setThrowExceptionOnScriptError(false);

webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);

webClient.getOptions().setTimeout(3000000);

HtmlPage rootPage = webClient.getPage(url);

String html = rootPage.asXml();

Document document = Jsoup.parse(html);

Elements es = document.select("div.comments");//.select("#content_left");

System.out.println(es);

if(es!=null && es.size()>0){

for (Element element : es) {

String link = element.select("div.f13>a").attr("href");

String title = element.select("div>h3>a").text();

String text = element.select("div.c-abstract>em").text();

}

}

获取到的是Document 使用标签选择器,选择页面标签中的值,即可获取页面内容。

3.获取评论或其他内容,返回json数据;js请求

普通请求,只需要使用

HttpURLConnection connection = createRequest(url, "GET");

// 建立实际的连接 connection.connect();

发送GET请求过去json数据后解析即可;

4.js请求带请求头参数(部分为移动端请求)

CloseableHttpClient https = HttpClients.createDefault();

String url = "https://action=hene=124&devicetype=androidlag=zh_CN&nettyene=3&pass_ticwx_header=1";

HttpGet httpPost = new HttpGet(url);

httpPost.addHeader("Host", "

mp.weixin.qq.com

");

httpPost.addHeader("x-wechat-uin", wechartCookie.getUin());

httpPost.addHeader("x-", "参数");

HttpResponse response = https.execute(httpPost);

HttpEntity entitySort = response.getEntity();

String html = EntityUtils.toString(entitySort, "utf-8");

请求头参数根据抓包工具拦截的请求时需要的参数变更;

网页中使用js可以实现调用用户机器上的http服务吗?
网页中使用js可以实现调用用户机器上的http服务吗?
网页中使用js可以实现调用用户机器上的http服务吗?
网页中使用js可以实现调用用户机器上的http服务吗?"

python如何通过 request 模块发送post请求?

发送post请求,最主要的还是抓包分析,获取到post提交的参数,然后利用python构建参数字典,模拟发送请求,下面我简单介绍一下过程,实验环境win10+python3.6+pycharm5.0+谷歌浏览器,主要内容如下:

1.这里以模拟登陆我们的校园网为例,界面如下,需要输入用户名、密码:

网页中使用js可以实现调用用户机器上的http服务吗?

接着按F12调出开发者工具,在当前页面输入用户名和密码,点击登陆,抓包分析,如下,可以看到登陆的页面url:

网页中使用js可以实现调用用户机器上的http服务吗?

往下翻,就可以看到页面在post提交时,传递的参数,如下:

网页中使用js可以实现调用用户机器上的http服务吗?

2.针对以上分析结果,我们就可以构建对应的代码了,如下,一个是post参数,一个是headers(模拟浏览器),这里建议用Session,会自动处理cookies,代码如下:

网页中使用js可以实现调用用户机器上的http服务吗?

接着我们就可以试着爬取一些页面,这里以爬取考试成绩为例,如下,利用BeautifulSoup解析一下页面,然后提取信息,打印出来,在上面代码的基础下再添加如下代码:

网页中使用js可以实现调用用户机器上的http服务吗?

程序运行截图如下,已经成功抓取到我们需要的数据:

网页中使用js可以实现调用用户机器上的http服务吗?

至此,我们就完成了利用python来模拟发送post请求。总的来说,整个过程不难,最主要的还是抓包分析,获取post参数,这里的页面比较简单,参数不多,好处理,但在一些比较大的网站中,post参数比较多,而且还有不少是经过加密处理的,或者有验证码,这个就需要自己认真的分析,研究对应的对策了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论