How to test websites that uses HSTS policies using Jmeter - jmeter

I have tried recording https websites using Jmeter.
This is list of observations:
for not HSTS websites, it creates a self signed certificate when we "Add Exception" and continues to record.
For HSTS websites, we cannot "Add Exception".
Is there any way we can record HSTS domains like https://www.google.com ?

You can try using an alternative way of recording - JMeter Chrome Extension, in this case you won't have to worry about proxies and SSL certificates.
Another option is capturing the traffic using an external sniffer tool like Wireshark or Fiddler or even built-in browser developer tools to capture the traffic and once done manually creating the relevant HTTP Request samplers.

Related

jmeter and Cloudflare : 1020 error ; works with Postman

New to Jmeter so I am not sure if my set-up is correct.
Basically I have these set of API's that I need to Perf test. Starting with a setting up a basic connection from Jmeter - I am receiving 1020 error from cloudflare
Access denied | "domain" used Cloudflare to restrict access
and
<div class="cf-alert cf-alert-error cf-cookie-error hidden" id="cookie-alert" data-translate="enable_cookies">Please enable cookies.</div>
It works with POSTMAN. So wondering what changes I'll need in jmeter.
I have enabled save cookie in jmeter.properties file
API is for logging into a portal: verified username/password. VPN connection verified as this works from postman.
If you're absolutely sure that the request works in postman (although I'm getting this 1020 error even with the real browser) you should be able to get the same behavior in JMeter as well, just make sure to send the identical request (pay attention to HTTP Headers as well)
The easiest is just recording your Postman request using JMeter's HTTP(S) Test Script Recorder, just configure Postman to use JMeter as the proxy
and run your request - JMeter will generate appropriate HTTP Request sampler and HTTP Header Manager
If you need to use VPN for proper access you might need to configure source IP address at the "Advanced" tab of the HTTP Request sampler like it's described in Using IP Spoofing to Simulate Requests from Different IP Addresses with JMeter article
In any case load testing an API behind Cloudflare might be not the best idea as Cloudflare provides DDoS protection and may (and will) block this type of traffic so you need to either whitelist your IP address(es) or let them know about your load testing activities, I believe they will be able to suggest a better workaround than anyone here
This is related with the securities features of CloudFare, either DDos protection or bot blocking. Exceptions can be configured from the CloudFare control panel.
If you don't have access to this panel you'll have to ask the corresponding person inside your company tasked with this job.

How to use JMeter to record user input

How to record user input parameters using JMeter? I tried to use the record controller and follow through the tutorials, all the records are only http get requests without any post input. Thanks
Properly configured JMeter captures all network activity between browser and application under test, the fact you don't see POST requests might indicate one of the following:
Browser simply doesn't make any POST requests, i.e. your application is designed to operate only GET HTTP Request types
Your JMeter configuration is not correct, i.e. your application uses HTTPS. In this case you need to perform some extra configuration so JMeter could intercept, decrypt and record HTTPS requests:
make sure your browser is configured to use proxy for all protocols
make sure you install JMeter's self-signed certificate to your browser. The file name is ApacheJMeterTemporaryRootCA.crt and it is being generated in "bin" folder of your JMeter installation when you start JMeter Proxy Server
More information:
HTTP(S) Test Script Recorder (pay attention to HTTPS recording and certificates chapter)
Recording HTTPS Traffic with JMeter's Proxy Server

Desktop based application recording in jmeter

I have a desktop based(.exe) application used for trading of equities.
1.Developed in VB uses TCP/IP.
2.Uses a database server which is an another server which the exe sends requests on.
3.I want to get the entire response using jmeter for 50 users at a time.
I wanted to record the responses for the transactions.I have worked with web applications where we create Http proxy server and start it and the recording happenes from browser but in this case i cant use browser.
Please guide me how to record the responses in jmeter with .exe applications.
Thanks and Regards,
Kumar
JMeter HTTP(S) Test Script Recorder is capable of recording only HTTP or HTTPS traffic so if following conditions are met:
Your .exe application talks to server using HTTP
Your .exe application can be configured to use HTTP proxy or respects Windows global HTTP Proxy settings from registry (or configured in Internet Explorer)
the answer is "yes", you can use JMeter to record the traffic. See Load Testing Mobile Apps. But Made Easy. guide for details on how to do it.
If one of above conditions cannot be satisfied there are following options available:
If you still want to use JMeter there is a possibility to use a sniffer tool like Wireshark to capture requests and manually construct them using JMeter HTTP Request or TCP Sampler.
Consider switching to Grinder tool which offers TCP Proxy
Hope this helps.

How to capture traffic with fiddler while using another proxy

To access some websites that I need to test I need to plugin some specific proxies on firefox. However when I set my proxy through firefox or any browser, fiddler doesnt capture anymore request, due that it also uses its own proxy to get the requests. Is there any way I could capture traffic using fiddler while at the same time Im using an external proxy using any browser?
Fiddler allows you to chain to an upstream proxy, so traffic first goes to Fiddler, then goes from Fiddler to another proxy.
Fiddler will automatically chain to any proxy configured in Internet Explorer.
To manually chain to a different proxy, in Fiddler, click Tools > Fiddler Options and go to the Gateway tab. Specify the desired upstream proxy there.

See useragent in an https connection?

I have an app, and it makes an https connection to a server. Is it possible to use something like wireshark or charlesproxy to just see the useragent that it's connecting with? I don't want to see any of the actual data, just the useragent - but I'm not sure if that is encrypted as well? (and if it's worth trying)
Thanks
Is it possible to...
No. Browser first establishes secure connection with server, then use it for transfer all data including requests' data, various headers etc.
Too late for the original inquirer, but the answer is that it may be possible in some cases, depending on application implementation.
You can use fiddler, and by turning on the 'decrypt https traffic' you also have visibility to the HTTPS content in some cases.
What fiddler does (on windows at least) is register itself within the wininet as system proxy. It can also add certificates (requires your approval when you select to decrypt https traffic) and generates on the fly certificates for the accessed domains, thus being MitM.
Applications using this infrastructure will be 'exposed' to this MitM. I ran fiddler and ran a few applications and was able to view https traffic related to office products (winword, powerpoint, outlook) other MS executables (Searchprotocolhost.exe) but also to some non-microsoft products such as apple software update, cisco jabber)

Resources