2018-01-10:fix post 请求数据遗漏部分内容

背景:

  最近在写一个小程序,发现博主所在的地区访问该网站时有防ddos功能验证导致程序不能正常工作。

  经过试验发现可以用国外代理ip解决这个问题,但是程序走代理访问延迟高且不稳定。

思路:

  selenium启动浏览器 => 手动通过网站ddos验证 => 程序操控其他业务请求

问题:

  1.selenium 不支持 post 请求方式

  2.selenium 不支持自定义 request header

环境:

  selenium:3.8.1

  JDK:1.8

  firefox:45.9.0esr     下载历史版本:https://download-installer.cdn.mozilla.net/pub/firefox/releases/

解决方案:

  1.写一个本地页面,post请求通过本地页面的ajax请求转发出去,ajax也支持自定义request header

    问题:本地页面转发会在request header附带上origin。网站对origin有校验,导致访问失败

  2.selenium 执行 js代码

    问题:只能执行原生js代码

    参考代码:https://stackoverflow.com/questions/11430773/how-to-use-javascript-with-selenium-webdriver-java

    WebDriver driver = new FirefoxDriver();   

        // 打开这个网站,防止js跨域请求(用baidu举例)
driver.get("https://www.baidu.com"); // 开启开发者模式,方便观察请求
Actions builder = new Actions(driver);
builder.sendKeys(Keys.F12).perform(); JavascriptExecutor jse = (JavascriptExecutor) driver ; try { String resp = (String) jse.executeScript(
"var xmlhttp=new XMLHttpRequest();\n" +
"xmlhttp.open(\"GET\",\"https://www.baidu.com\",false);\n" +
               "xmlHttp.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded\");\n" + // 表单提交的头部信息
"xmlhttp.setRequestHeader(\"testHeader\",\"123456\");\n" + // 自定义请求头
"xmlhttp.send(\"name=test&sex=1&age=18\");\n" + // 表单数据
"return xmlhttp.responseText;");    System.out.println(resp); } catch (Exception e) {
//.......... Exception
}

以上,抛砖引玉。如有更好的解决方案,请留言讨论,谢谢!

工作随笔——selenium支持post请求,支持自定义header的更多相关文章

  1. 原创:【ajax | axios跨域简单请求+复杂请求】自定义header头Token请求Laravel5后台【亲测可用】

    如标题:我想在ajax的header头增加自定义Token进行跨域api认证并调用,api使用laravel5编写,如何实现? 首先,了解下CORS简单请求和复杂请求.  -- CORS简单请求 -- ...

  2. jquery + node 通过 CORS 实现跨域访问,支持cookie和自定义header

    跨域有多种方式,现在的情况看来还是CORS更适合一些,有很多优点,比如浏览器正式支持.支持post.可以控制跨域访问的网站等. 我们来看看node如何实现cors方式的跨域.在网上找到了一些代码,考过 ...

  3. Spring Boot Web应用开发 CORS 跨域请求支持:

    Spring Boot Web应用开发 CORS 跨域请求支持: 一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等CORS与JSONP相比 1. JSONP只能实现 ...

  4. React Native之(支持iOS与Android)自定义单选按钮(RadioGroup,RadioButton)

    React Native之(支持iOS与Android)自定义单选按钮(RadioGroup,RadioButton) 一,需求与简单介绍 在开发项目时发现RN没有给提供RadioButton和Rad ...

  5. 让WebService支持Get请求

    在C#中,新建一个webservice,默认是post类型的.如果需要支持Get请求,需要对web.config文件进行配置 <system.web> <compilation de ...

  6. dropwizard使用cors支持跨域浏览器取不到自定义header问题

    dropwizard支持cors的配置如下: public void run(Configuration conf, Environment environment) { // Enable CORS ...

  7. 测试平台系列(92) 让http请求支持文件上传

    大家好~我是米洛! 我正在从0到1打造一个开源的接口测试平台, 也在编写一套与之对应的教程,希望大家多多支持. 欢迎关注我的公众号米洛的测开日记,获取最新文章教程! 回顾 上一节呢,我们编写了oss的 ...

  8. 背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互

    [源码下载] 背水一战 Windows 10 (64) - 控件(WebView): 加载指定 HttpMethod 的请求, 自定义请求的 http header, app 与 js 的交互 作者: ...

  9. 开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等

    开源基于asio的网络通信框架asio2,支持TCP,UDP,HTTP,RPC,SSL,跨平台,支持可靠UDP,支持TCP自动拆包,TCP数据报模式等 C++开发网络通信程序时用asio是个不错的选择 ...

随机推荐

  1. [转载] 高性能IO模型浅析

    转载自http://www.cnblogs.com/fanzhidongyzby/p/4098546.html 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(B ...

  2. db2中left()函数和right()函数对应oracle中的substr()函数

     DB2 LEFT.RIGHT函数 语法:LEFT(ARG,LENGTH).RIGHT(ARG,LENGTH) LEFT.RIGHT函数返回ARG最左边.右边的LENGTH个字符串,ARG可以是CHA ...

  3. 关于Python在Linux、Mac和Windows上的安装方法总结

    一.Linux下安装python   1.python源码安装包下载地址:   https://www.python.org/downloads/source/   2.下载完tar.xz压缩包以后, ...

  4. Servlet之过滤器(Filter)和监听器(Listener)

    过滤器 过滤器是一个java组件,可以拦截发送至某个servelet,jsp页面或静态页面的请求,可以在响应发送到客户之前进行拦截 工作原理: 过滤器类必须实现 Filter 接口,包含的方法如下: ...

  5. Libevent 事件循环(2)---事件被加入激活队列

    由Libevent 事件循环(1) 在上文中我们提到了libevent 事件循环event_dispatch 的大致过程,以epoll为例,我们看一下事件被如何加入激活队列. //在epoll_dis ...

  6. Spring Cloud 之 Ribbon

    新建Spring Boot工程,命名为ribbon 1.pom.xml添加依赖 <?xml version="1.0" encoding="UTF-8"? ...

  7. tp中like多字段同时怎么模糊搜索

    例如 select * from tbl where a like '%123%' or b like '%123%' or c like '%123%' ;实现这样的功能,thinkphp怎么写呢? ...

  8. UWP 应用程序内购

    今天来说一下应用程序内购的问题,这里面有坑,给自己做个笔记,也给需要的人提个醒. 我目前的需要是可以允许用户捐赠赞助App的形式内购,最终效果如下 只讲上面的列表部分,下面的就是图片布局啥的,没意思了 ...

  9. vue.js介绍,常用指令,事件,以及制作简易留言版

    一.vue是什么? 一个mvvm框架(库).和angular类似,比较容易上手.小巧,让我们的代码更加专注于业务逻辑,而不是去关注DOM操作 二.vue和angular之间的区别 vue--简单易学 ...

  10. Selenium中如何使用xpath更快定位

    在学习Selenium路上,踩了也不少坑,这是我最近才发现的一个新写法,好吧,"才发现"又说明我做其他事了.对的,我现在还在加班! 开车~~~ 例子:知乎网 标签:Python3. ...