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 = newFirefoxDriver();//打开这个网站,防止js跨域请求(用baidu举例)

driver.get("https://www.baidu.com");//开启开发者模式,方便观察请求

Actions builder = newActions(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

}

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

python selenium post请求_工作随笔——selenium支持post请求,支持自定义header相关推荐

  1. python selenium手动输入验证码_案例:selenium实现登录百度(如有验证码,需要手动输入)...

    func.py baidu_login.py中(如有验证码,需要手动输入) # 导入webdriver import os import time import re from lxml import ...

  2. selenium java 验证码_如何使用Selenium WebDriver和Java从图像(验证码)中读取文本

    我有注册网页,但在最后验证码显示.. 我无法从图像中读取文本.我要提一下代码和输出.. @Test public void loginTest() throws InterruptedExceptio ...

  3. selenium java框架_自动化测试框架selenium+java+TestNG——配置篇

    最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: ...

  4. python中常用模块_工作中用过的Python常用模块:(基于3.x)

    内置模块: sys 用于提供对解释器相关的访问及维护.例如:sys.argv --传参 sys.platform --返回系统平台名称 sys.version --查看python版本 os 用于提供 ...

  5. python实现ping命令_[小菜随笔]python tkinter实现简单的ping命令

    本文主要是介绍python图形界面上的按键与实际功能的对接,其实编程掌握了基础之后的学习应该都是靠自己去挖掘其他的 在网上发现多半教程都是2的,故本文使用的是python3.5,其实也没什么区别,就有 ...

  6. python生成word图表_工作汇报神技!用Python三步生成带有图表的word报表

    最近在项目中做了一个生成并导出word报表的功能,在这里分享给大家. 经过查看ESPC原有的生成报表代码和网上查阅的一些方法,解决方案的思路如下: 1. 利用pychartdir库生成图表,保存图片, ...

  7. python如何提高自己_工作以后,我们如何实现自我提升

    最近和朋友聊到工作中和自我提升的话题,在这方面话题很多书籍著作讨论的很多比较多了的,在此我也简单谈一下自己的一些思考和认识. 实现自我提升我把他分为「工作时间」和「非工作时间」两大块. 工作时间 工作 ...

  8. python requests 400错误_「http 400」http请求报400错误的原因分析 - seo实验室

    http 400 http 400 错误 - 请求无效 (Bad request) 在ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效 ...

  9. rxswift 网络请求_使用RxSwift将身份验证请求链接到多个服务

    rxswift 网络请求 At a company that I have worked in the past, a high-traffic online classifieds, the bac ...

最新文章

  1. python使用matplotlib可视化线图(line plot)、自定义可视化图像的四个边框的色彩、可以分别设置矩形每一条边的色彩(change the axis color)
  2. 数据库中的索引技术——哈希索引
  3. 成功解决softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be
  4. python中几种推导式的特殊用法
  5. VTK:Actor边缘颜色用法实战
  6. linux重启后root密码错误,Linux技巧| 解决Debian Root密码忘记的问题
  7. 谈谈Groovy闭包
  8. 呆萌的图模型学习——使用networkx计算node2vec,得到节点与边的embedding(三)
  9. java工程中使用freemarker例子
  10. sp导出法线_SP导出贴图导Redshift渲染效果不同的问题
  11. table中强制不换行
  12. 通达信自动交易软件步骤分析
  13. 【程序源代码】番茄时间小程序
  14. html5读取umd,教程:使用umd、commonjs和es三种模式制作自己的React 组件(库)
  15. 第3章【思考与练习4】数据清洗,从studentsInfo.xlsx 文件的“Group1”表单中读取数据。数据填充,使用习题1的数据,使用列的平均值填充“体重”和“成绩”列的NaN数据。
  16. 64 位 Microsoft Windows 驱动程序清单
  17. 天下网商属于阿里系吗_“阿里公子”商标申请被驳回,不属于马云父亲的阿里家族吗?...
  18. #453 原汤话原食:除夕夜请热心市民陪我销毁一下烟花爆竹
  19. 29 Redis 应对并发访问的无锁原子操作
  20. 网络安全--主机探测教程

热门文章

  1. recv, recvfrom, recvmsg
  2. Sx05RE-S905.arm-2.2.1
  3. Spring-boot中读取config配置文件的两种方式
  4. Node Express4.x 片段视图 partials
  5. CentOS 7安装redis及php扩展
  6. [团队项目3.0]Scrum团队成立
  7. 停止Hadoop或HBase集群的脚本
  8. 玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)
  9. 在查询的结果中添加自增列 两种方法
  10. 测试Rockey 4 Smart加密锁的C语言代码