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

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

}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10-30 团队的自动化

这两天周小蓉这个QTP高手,也开始琢磨自动化了,写出了一个脚本,可以对照界面的值与数据库值得一致性,非常棒! 我想,这就跟学习一样,有了环境人更想去学习,所以我们组现在的好气氛&…

thinkserver rd650管理口地址_路由器WAN口和LAN口有什么区别【区别介绍】

现在一般家庭上网采用ADSL电话线上网的较多,而且家里一般都有好几台电脑,那么如何使几台电脑同时上网呢?这就要用到宽带路由器了,一般情况下宽带路由器上面有好几个网线插口,这些网线插口上有的标有WAN,有的网口标有L…

c语言mcisendstring函数,mciSendString用法

使用MCI API,源文件中需要包含头文件 Mmsystem.h,在Project->Settings->Link->Object/libray module中加入库 Winmm.lib。 VS2008在源文件加上#include "mmsystem.h" #pragma comment(lib,"winmm.lib")1、MCI简…

整合

如何进行资源的整合,,,,, 如何进行网络资源的整合,,,, 如何将很多的积分进行整合,,,,,貌似第三季赢在中国的那个老外做了一个整合很多网站积分的项目,,,,,, 健康信息如何实现整合,,,,,貌似这也是第三季赢在中国里面一个人的项目,,,,, 好好反思下,如何整合,,,,,,,,将自己的学习资…

Tech·Ed 2009

今年是我第一次以讲师身份参加TechEd,碰巧TechEd所在的周末我们要搬家到百度大厦,所以我星期四早上搞掂打包工作后就赶到了会场。凭着《讲师指南》进入会场后,我直奔讲师休息室领取证件和衣服,然后再跑到MVP站台领取印章&#xff…

c语言1e3和1e3,自考“高级语言程序设计”习题答案详解(33)

6.1 单项选择题1.函数调用语句“f((el,e2),(e3,e4,e5));”中参数的个数是( )①1 ②2③4 ④5「解」上述函数调用中,(e1,e2)和(e3,e4,e5)是两个带括号的表达式,…

python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言SNMP协议的网络交换机监测系统设计思路与实现方法。整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现。后端采用Python编程语言实现对交换机各项数据的获取,实时数据…

兰州交通大学C语言课程设计,兰州交通大学C语言课程设计报告(完整版).doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计兰州交通大学C语言课程设计报告(完整版).doc12页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整…

python manager与basemanager_使用Python多处理管理器(BaseManager/SyncManager)与远程计算机共享队列时出现管道中断...

在上个月,当我们试图使用Python2.6.x多处理包在几个不同的(linux)计算机之间共享队列时,我们遇到了一个持久的问题。我也直接向Jesse Noller提出了这个问题,因为我们还没有找到任何解释StackOverflow、Python文档、源代码或其他在线问题的东西…

Lucene 工作原理

Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下:0)设有两篇文章1和2文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too.文章2的内容为:He once lived …

导出excel数字前面的0消失_EXCEL文本之王TEXT函数的4个运用

转自EXCEL不加班今天分享文本之王TEXT函数的4个运用,跟着卢子一起来操作。1.发票号都是8位,从系统导出后前面的0消失,如何补齐?常规格式发票号前面的0都会消失,只有文本格式情况下的0才不会消失。事先录入的话&#xf…

c 语言读取注册表信息,C++读取注册表的实现方法

C读取注册表GetRegValue.h:#ifndef __GETREGVALUE_H__#define __GETREGVALUE_H__#include //---------------------------------------------------------------//function:// GetRegValue 获取注册表中指定键的值//Access:// public//Parameter:// [in] int nKeyType - 注册表…

java传值问题.

Java传递参数只有一种 :值传递 而没有引用传递 一般根据传递类型来分类 可以分为 值类型数据 和 引用数据类型 值类型是原始数据类型 包括 int,byte,char short long,boolean,float,double 引用类型就是一般的class类 当然也包括原始数据的封装类型 比如int的 封装类…

stm32按键矩阵代码_STM32 学习笔记---1

既然打算学,基础的东西元件的得知道是什么,这样写代码的时候才能知道自己在干什么!ROM 和Flash 断电后都能储存数据,RAM则不能其实闪存(flash)是ROM的一种它的全名---FLASH EEPROM EEPROM---电可擦除可编程…

c语言 包络算法,包络检测C程序

最近做项目要提取一个声音信号的包络波形,所以花了点时间研究各种包络提取的算法。所谓包络检测又叫幅度解调,在许多领域都有重要的应用。如果载波信号是确定的,那么通常可以采用同步解调的方式,这种方式的信噪比最好,…

SQL Server 2005 DTS导入平面数据

SQL Server 2005 DTS导入平面数据源时,总是被截断,无法执行的错误解决方案 1 典型的错误信息如下: 消息 * 错误 0xc02020a1: 数据流任务: 数据转换失败。列“列 2”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个…

python交换数组中的两个元素_[Python]华为面试题,交换两个数组的元素使之总和的差值最小。...

看看写了个 &#xff0c;实现不需数组长度一致&#xff0c;复杂度O(n^2),求好的算法/** arr1{1,2,3};* arr2{22,33,44,55};* 交换两个矩阵数据*/public void exchange(){int index0;int lenarr1.length;int currMinusgetMinus();while(true){for (int i 0; i < arr2.length…

c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break

先来看一个没有break的例子&#xff1a;int main(){int a 1;switch (a){case 1:printf("1");case 2:printf("2");}}我们看一下它的汇编代码&#xff1a;switch (a)0137181F mov eax,dword ptr [a]01371822 mov dword ptr [ebp-0D0h],eax01371828 cmp dwor…

VC中ADO连接SQLSERVER的几种标准方式?

VC用ADO访问数据库全攻略,介绍了VC用ADO来访问数据库的各个对象及各方法&#xff0c;很经典&#xff0c;也很实用&#xff0c;很值得一看。 正文 一、ADO概述 ADO是Microsoft为最新和最强大的数据访问范例 OLE DB 而设计的&#xff0c;是一个便于使用的应用程序层接口。ADO 使您…

usb转ttl_[开源]双TYPEC转TTL串口模块

在工作中经常会用到USB转TTL串口调试工具。网上买的用的不顺手&#xff0c;所以做了一个。最终效果:渲染图实物图学习目的做一个USB转串口模块&#xff0c;使用学习渲染软件keyshot使用到的工具:立创EDA&#xff0c;keyshot等电烙铁&#xff0c;万用表等1.需要实现的功能4.根据…